剖析C ++编译过程
我倾向于编写相当大的模板化头文件C ++库,而我的用户通常会抱怨编译时间。 想到这件事后,我想起了我不知道时间在哪里。 是否有一些简单的方法来用常见编译器(如g ++,icc和xlC)剖析C ++编译过程? 例如,是否有可能知道在C ++编译的每个阶段花了多少时间?
对于GCC ,有调试选项可以查找how much time is spent within each of the phases of C++ compilation?
-Q使编译器在编译时输出每个函数名称,并在每次传递完成时打印一些统计信息。
-ftime-report使编译器打印一些统计信息,说明每次传递完成时所用的时间。
GCCINT 9:编译器的通过和文件中描述了通过。
你可以在这里用-v -ftime-report
来发布单源文件的g ++编译输出来讨论它。 在GCC邮件列表上可能会有一些帮助。
对于除GCC以外的编译器(或比3.3.6更古老的GCC),请参阅此主题中的其他选项。
Boost项目中有一个工具 ,对于任何编译器和构建系统都很有用。
该工具需要使用TEMPLATE_PROFILE_ENTER()
和TEMPLATE_PROFILE_EXIT()
宏调用的源代码工具 。 这些宏然后在编译时生成特定的诊断(警告),这些宏随着实例化调用堆栈(由此允许通过脚本构建和可视化调用图)而被定时和收集。 不错,国际海事组织。
尽管如此,我还没有使用它。
我还没有尝试过,但templight看起来很有希望:https://github.com/mikael-s-persson/templight
链接地址: http://www.djcxy.com/p/43847.html