首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是c++编译性能瓶颈?

什么是c++编译性能瓶颈?
EN

Stack Overflow用户
提问于 2011-02-01 21:35:02
回答 5查看 1.6K关注 0票数 6

当我为我的项目进行新的编译时,其中包括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 (该死)

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-02-01 21:47:05

从VS2010开始,VS在编译单个项目时可以选择使用多个核心。它还可以并行编译多个项目。然而,在我的经验中,并行加速似乎并不重要:例如,Xcode在并行构建方面要好得多。

幸运的是,您不必每次都重新构建开源库,对吧?您可以构建它们一次,将.lib文件存储在版本控制中,并在后续构建中使用这些文件。

你有没有试过为你自己的代码预编译头文件?这可以产生巨大的加速比。

票数 2
EN

Stack Overflow用户

发布于 2011-02-01 21:45:48

你错了,多核带来了巨大的加速,直到你的硬盘驱动器实际停止工作的那一刻:)

通过示例证明:distcc,它带来了分布式构建(我的构建并行使用了大约20个内核,它实际上受到本地预处理阶段的约束)。

至于真正的瓶颈,它与#include机制有关。带有模块的语言的编译速度要快得多。

票数 4
EN

Stack Overflow用户

发布于 2011-02-01 22:10:21

40分钟的构建很可能是由糟糕的#include使用率导致的(实际上,我甚至可以说几乎肯定是40分钟)。您正在包含不需要包含的内容,它们可能只需要转发声明。

整理你的代码会产生巨大的不同。我知道这有很多工作,但你会感到惊讶的。在一家公司,我在一个花了30多分钟构建的库中工作,通过确保所有的#includes都是必需的,并添加转发声明而不是#includeing,在一周多的时间内优化到3分钟的构建。这个库有超过一百万行的代码,让你有一个想法……

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4863221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档