Dan*_*vil 63 c++ templates compilation g++
这个问题可能有些奇怪,但我怎样才能加快g ++编译时间?我的C++代码大量使用boost和模板.我已经尽可能多地从头文件中移动并使用-j选项,但是编译(和链接)仍需要很长时间.
是否有任何工具可以分析我的代码并指出编译器的瓶颈?或者可以以某种方式分析在我的代码上运行的编译器?这将是非常好的,因为有时我有这样的印象,我花了太多时间盯着编译器控制台日志...
str*_*ger 49
对我来说最有用的是:
-j3全球范围内制作.但是,确保您的Makefile中的依赖关系图是正确的,否则您可能会遇到问题.-O0,如果你不测试执行速度或代码大小(和你的电脑足够快你不那么在意(可能小)的性能损失).Nor*_*ame 17
我认为我们正在谈论分钟编译文件,即预编译头或本地磁盘的问题都不是问题.
使用深层模板代码(boost等)的长编译时间通常源于gcc在模板实例化时不友好的渐近行为,特别是当使用模板默认参数模拟可变参数模板时.
这是一个文档,它将减少的编译时间命名为可变参数模板的动机:
cpptruths有一篇关于gcc-4.5如何更好地代表它以及它如何通过其可变参数模板做得非常出色的文章:
IIRC然后BOOST有办法限制伪变量的模板默认参数的生成,我认为'g ++ -DBOOST_MPL_LIMIT_LIST_SIZE = 10'应该工作(默认为20)
更新:还有一个很好的线程,通过一般技术来加速在SO上进行编译,这可能很有用:
更新:这个是关于编译模板时的性能问题,接受的答案也推荐gcc-4.5,也提到了clang作为一个积极的例子:
| 归档时间: |
|
| 查看次数: |
37791 次 |
| 最近记录: |