【发布时间】:2023-03-24 00:36:01
【问题描述】:
每次提交时,我都会在 buildbot 中编译 2 个 C++ 项目。两者都是大约 1000 个文件,一个是 100 kloc,另一个是 170 kloc。从 gcc (4.4) 到 Visual C++ (2008) 的编译时间非常不同。
一个项目的 Visual C++ 编译需要 20 分钟。他们无法利用多个核心,因为一个项目依赖于另一个。最后,在 Debug 和 Release 中完整编译这两个项目(32 位和 64 位)需要超过 2 1/2 小时。
一个项目的 gcc 编译需要 4 分钟。它可以在 4 个内核上并行化,大约需要 1 分 10 秒。 2 个项目的 4 个版本(调试/发布,32/64 位)的所有 8 个构建都在不到 10 分钟内编译完成。
Visual C++ 编译时间发生了什么变化?它们基本上慢了 5 倍。
编译 C++ kloc 的平均预期时间是多少?我的是 7 s/kloc with vc++ 和 1.4 s/kloc with gcc。
可以做些什么来加快 Visual C++ 上的编译时间吗?
【问题讨论】:
-
磁盘只有 1/3 满。我怀疑碎片和 DLL 副本能否将编译时间缩短 5 倍!可能只有 10%,但不会更多。
-
感谢您的意见...但只是好奇...问题是头文件中的实例化,还是我提到的其他问题之一?
-
对我们有很大帮助的东西是将所有临时文件、中间文件和 pch 文件移动到 ram 磁盘上,但尽管 Windows 机器有 ssds 和 linux 机器有 hds,但仍然没有 GCC 快。我们在 Dual Xeon E5440 上进行编译,我发现“make -j33”的编译时间比人们推荐的“-j9”要好得多(我运行了一个简单的脚本来对从 0 到 99 的每个 -j 设置进行基准测试)跨度>
标签: c++ visual-c++ gcc comparison compilation-time