【发布时间】:2015-05-29 08:48:53
【问题描述】:
使用-jN 编译会更快,因为它同时编译多个部分。但是 GCC 文档说(虽然我找不到确切的链接)使用 -j1 编译会产生更好的优化二进制文件。
您能解释一下使用-j1 编译的所有好处吗?您能否提供一个小型 POC 来证明使用 -j1 编译生成比 -jN 更优化(在性能方面)的二进制文件?
【问题讨论】:
-
我想获得该声明的链接。
-
如果我不得不推测,我会说多线程编译可能不会对在不同线程中编译的代码块应用程序间优化。
-
您可能正在考虑整个程序优化。当 gcc 只看到 1 个文件时,它仅限于它可以优化的内容,因为未知的外部代码可能取决于行为。如果 gcc 看到整个程序,它可以准确地确定哪些代码取决于什么,从而可以进行更好的优化。使用 -j1 让 gcc 一次编译一个文件或使用 -jN 来同时编译所有文件都没有区别。但是,是让一个实例通过一次调用编译所有内容,还是让每个文件分别通过单独调用编译,这确实有所不同。
-
@nwp 是的,我在说这个,我只是不知道如何表达。谢谢!您能否为我指出更多文档或在答案中进一步详细说明以便我接受?