调试GCC编译时间

22
我正在使用GCC 4.6在Linux中创建一个相当大的C++0x库。我的库严重依赖于模板类,导致使用该库的应用程序编译时间很长。我想通过提供最糟糕的类型/方法的显式实例来加速编译。是否有一种方法可以让GCC报告编译各种类型/方法所花费的时间,以便我可以有原则地应用我的显式实例,而不是凭直觉?
2个回答

29

g++ some_file.cc -ftime-report会给你一个大致的时间估计,用于不同编译器阶段的时间消耗。在你的情况下,最重要的是名称查找和解析。

很遗憾,没有办法获得每个类/函数的编译时间。

Steven Watanabe提出了一个模板分析器,可以在Boost沙箱中找到,它可以帮助获取.cc文件中任何东西的潜在实例化数量。

12年后的更新:

大多数这些解决方案已经过时了。 请参考https://github.com/aras-p/ClangBuildAnalyzer以获取现代化的方法。


5
说到程序分析器链接: https://svn.boost.org/svn/boost/sandbox/tools/profile_templates/ - Joel Falcou
1
如果有关于如何使用它的文档,那么这将会更加有用。 - xaxxon
@xaxxon 有一个“doc”文件夹 :) - Bulletmagnet
我很难仅通过文档文件夹来弄清楚如何使用它。Steven的原始帖子提供了更多上下文:http://boost.2283326.n4.nabble.com/Profiling-template-instantiations-td2657157.html - Fractaly
FTR:既然原始存储库已经消失,至少(它的一个分支)可以在GitHub上找到:https://github.com/psiha/profile_templates2(这本身也是十多年来被遗弃的软件 :) )。顺便问一下,关于这个话题有更好的指引吗?例如,自那时以来是否已经成为某个编译器的特性? - Sz.
现在使用https://github.com/aras-p/ClangBuildAnalyzer更好。我应该编辑原帖吗? - undefined

1

我知道这不是你要找的,但也许 ccache 或者 distcc 可以帮助加速编译。

另外,如果你有多核机器,可以利用 make -jN 让 Make 同时运行 N 个作业。

别忘了也可以使用预编译头文件(precompiled headers)


幸运的是,我有一个服务器农场,在那里我进行编译 - 但是,我正试图为任何想要编译所有这些疯狂模板的可怜用户加快速度。 - rcv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接