分析 C 编译过程

新手上路,请多包涵

我倾向于编写相当大的模板化仅标头 C++ 库,而我的用户通常抱怨编译时间。想了想这件事,我突然想到, _我不知道时间都去哪儿了_。是否有一些简单的方法可以使用常见的编译器来分析 C++ 编译过程,例如 GCC ( g++ )、 Intel C++ 编译器( icc ) 和 XL C/C++ ( xlC )?例如,是否有可能了解 C++ 编译的每个阶段 花费了多少时间?

原文由 Jack Poulson 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 465
2 个回答

对于 GCC ,有 调试选项 可以找出 C++ 编译的每个阶段花费了多少时间?

-Q 使编译器在编译时打印出每个函数名称,并在完成时打印有关每个传递的一些统计信息。

-ftime-report 使编译器在完成时打印有关每次传递所消耗时间的一些统计信息。

Passes 在 GCCINT 9: Passes and Files of the Compiler 中有描述。

您可以在此处使用 -v -ftime-report 发布单个源文件的 g++ 编译的输出以进行 讨论GCC 邮件列表 上可能会有一些帮助。


对于 GCC 以外 的编译器(或比 3.3.6 更古老 的 GCC),请参阅其他答案中的其他选项。

原文由 osgx 发布,翻译遵循 CC BY-SA 4.0 许可协议

Boost 项目中有 一个工具,它可以用于几乎任何编译器和构建系统。

该工具需要带有 TEMPLATE_PROFILE_ENTER()TEMPLATE_PROFILE_EXIT() 宏调用的 源代码检测。然后,这些宏在编译时生成特定的诊断(警告),这些诊断与实例化调用堆栈(因此允许构建和 可视 化调用图)一起由脚本定时和收集。不错,IMO。

不过我还没用过。

原文由 ulidtko 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题