加速单个文件的 gcc 编译
Speeding up gcc compile of a single file
运行 RedHat7 w/g++ 版本 4.8.3 w/j5 arg 和 o3 优化。
我们目前有一个大约 90,000 行长的文件(一大堆包装函数)。此文件的编译当前需要 30 到 40 分钟。
加快构建时间的最佳策略是什么?如果在多个文件之间拆分,构建时间会增加吗?是否有不同的编译器设置有助于线程化编译?
假设将文件拆分成多个文件会有所帮助,但在我完成工作之前...需要社区帮助。
90000
赞!
What is the best strategy to speed this build time?
将那个傻瓜分成多个文件。最好按语义排序。当源文件达到 1k 行时,我个人开始感到不舒服。 2k线肯定感觉不对。而3k是我个人的极限。
Would build time increase if it was split between multiple files?
从技术上讲,启动编译器会产生一些开销。然而,如果 CPU cores/threads 执行并行构建将很容易过度补偿并缩短总构建时间:运行 并行多个 g++ 进程,每个文件一个。如果您使用的是 make
,则可以使用 -j
选项简单地做到这一点。
"Would build time increase if it was split between multiple files?"
第一次编译时,构建时间可能会增加,因为它必须打开所有文件(并创建 .o(bj))。但是,假设您没有更改其中一个包含 (.h) 文件,则每次后续编译都只需编译已更改的代码。
运行 RedHat7 w/g++ 版本 4.8.3 w/j5 arg 和 o3 优化。
我们目前有一个大约 90,000 行长的文件(一大堆包装函数)。此文件的编译当前需要 30 到 40 分钟。
加快构建时间的最佳策略是什么?如果在多个文件之间拆分,构建时间会增加吗?是否有不同的编译器设置有助于线程化编译?
假设将文件拆分成多个文件会有所帮助,但在我完成工作之前...需要社区帮助。
90000
赞!
What is the best strategy to speed this build time?
将那个傻瓜分成多个文件。最好按语义排序。当源文件达到 1k 行时,我个人开始感到不舒服。 2k线肯定感觉不对。而3k是我个人的极限。
Would build time increase if it was split between multiple files?
从技术上讲,启动编译器会产生一些开销。然而,如果 CPU cores/threads 执行并行构建将很容易过度补偿并缩短总构建时间:运行 并行多个 g++ 进程,每个文件一个。如果您使用的是 make
,则可以使用 -j
选项简单地做到这一点。
"Would build time increase if it was split between multiple files?"
第一次编译时,构建时间可能会增加,因为它必须打开所有文件(并创建 .o(bj))。但是,假设您没有更改其中一个包含 (.h) 文件,则每次后续编译都只需编译已更改的代码。