我有一个庞大的项目,大约150 000个LOC的C++代码。建造时间约为15分钟。该项目由许多不同规模的子项目组成。GCC编译时间不会从预编译头文件中获益太多
我已经为每个子项目构建了单独的预编译头文件,但是当我使用它们时,构建时间保持大致相同。看起来,构建时间减少5-10%,而不是更多。
预编译头肯定是用,我用-Winvalid-pch
选项,我试图与-H
编译器选项来编译,我的预编译头出现在“砰”的标志,这意味着编译器能够使用预编译头输出。
我所有的预编译头文件都不是很大,每个文件大约50Mb。 我使用python脚本,找到here来生成最常用的预编译头文件列表,所以我的预编译候选列表相当不错。
是否有任何免费/开源的构建优化工具?看起来,标准make
实用程序没有能力测量不同目标的构建时间。我找不到用make
获得不同目标统计数据的方法。我不是在谈论依赖关系分析还是先进的东西。我只想知道大部分时间里哪些目标被浪费了。
另外,看起来GCC在处理预编译头文件时效率很低。我无法让任何子项目的构建速度提高得更快,我得到的最大加速比为20%,这个项目需要三分钟才能完成。使用固态硬盘购买速度更快的机器似乎比使用GCC优化Linux上的编译时间要容易和便宜。
尝试使用驻留在/ dev/shm中的源代码和输出目录来构建。如果构建时间急剧下降,那么之前的构建文件系统是构建时间的主要贡献者。 – bobah
我不会那么大。更像是一个中小型项目:) –
@BЈовић同意,但在我的机器上编译速度更快(或至少可比)。 – Lazin