Jac*_*son 75 c++ profiling compilation
我倾向于编写相当大的模板化标头C++库,我的用户通常会抱怨编译时间.在想到这件事之后,我突然意识到我不知道时间会在哪里.是否有一些简单的方法来使用常见的编译器(例如g ++,icc和xlC)来分析C++编译过程?例如,是否可以了解在C++编译的每个阶段花费了多少时间?
osg*_*sgx 58
对于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 ),请参阅此线程中的其他选项.
Hol*_*Cat 13
Clang 9(和更新版本)有一个-ftime-trace
标志,这使得它以 JSON 格式输出分析报告(除了目标文件)。
您可以将此文件导入 Chrome ( chrome://tracing
)附带的分析器中以获得漂亮的可视化效果:
条形对应于必须解析的标题,并且对于每个标题,必须解析特定的类(可能还有其他结构)。它还报告实例化特定模板所花费的时间。
您可以在某种程度上将它们分开(我假设make
)
-E
开关),以及.PHONY
依赖于预处理器输出文件的目标,就像普通的二进制目标依赖于.o
文件一样。测量构建这个目标需要多长时间'PHONY
依赖于所有.o
文件但不链接它们的目标。测量构建这个目标需要多长时间(从干净)现在您已经知道预处理、编译和链接需要多长时间。您还可以比较-O0
第二个和第三个目标的优化和非优化 ( ) 版本,以查看在优化器中花费的时间。
归档时间: |
|
查看次数: |
13058 次 |
最近记录: |