当我为我的项目进行新的编译时,其中包括10+开源库。大约需要40分钟。(在普通硬件上)
问:我的瓶颈到底在哪里?硬盘寻道还是CPU Ghz?我不认为多核会有多大的帮助,对吗?
--编辑1--
我的正常硬件= i3 oc至4.0 2tb、8 8GB 1600 my DDR3和2TB西部数据
--编辑2--
我的代码= 10%,libs = 90%,我知道我不需要每次都构建所有东西,但我想找出如何提高编译性能,所以当为开发人员购买新pc时,我会做出更明智的选择。
--编辑3--
cc = Visual Studio (该死)
发布于 2011-02-01 21:47:05
从VS2010开始,VS在编译单个项目时可以选择使用多个核心。它还可以并行编译多个项目。然而,在我的经验中,并行加速似乎并不重要:例如,Xcode在并行构建方面要好得多。
幸运的是,您不必每次都重新构建开源库,对吧?您可以构建它们一次,将.lib文件存储在版本控制中,并在后续构建中使用这些文件。
你有没有试过为你自己的代码预编译头文件?这可以产生巨大的加速比。
发布于 2011-02-01 21:45:48
你错了,多核带来了巨大的加速,直到你的硬盘驱动器实际停止工作的那一刻:)
通过示例证明:distcc,它带来了分布式构建(我的构建并行使用了大约20个内核,它实际上受到本地预处理阶段的约束)。
至于真正的瓶颈,它与#include
机制有关。带有模块的语言的编译速度要快得多。
发布于 2011-02-01 22:10:21
40分钟的构建很可能是由糟糕的#include使用率导致的(实际上,我甚至可以说几乎肯定是40分钟)。您正在包含不需要包含的内容,它们可能只需要转发声明。
整理你的代码会产生巨大的不同。我知道这有很多工作,但你会感到惊讶的。在一家公司,我在一个花了30多分钟构建的库中工作,通过确保所有的#includes都是必需的,并添加转发声明而不是#includeing,在一周多的时间内优化到3分钟的构建。这个库有超过一百万行的代码,让你有一个想法……
https://stackoverflow.com/questions/4863221
复制相似问题