时间追踪:Clang 的时间线 / 火焰图分析器

时间追踪:Clang 的时间线 / 火焰图分析器

💡 原文英文,约1200词,阅读约需5分钟。
📝

内容提要

本文介绍了在Clang中添加时间追踪功能的过程,以生成编译性能的火焰图,帮助识别编译瓶颈,如预处理、解析和模板实例化。通过Chrome Tracing,发现某个头文件的包含时间过长,计划进一步优化编译速度。最终,成功修改了Clang并分享了构建和使用经验。

🎯

关键要点

  • 在Clang中添加了时间追踪功能,以生成编译性能的火焰图。
  • 通过Chrome Tracing发现某个头文件的包含时间过长,计划进一步优化编译速度。
  • 使用-ftime-trace命令行标志生成Chrome Tracing .json文件,帮助识别编译瓶颈。
  • 成功修改了Clang并分享了构建和使用经验,尽管构建过程有些复杂。
  • 通过可视化工具识别了处理时间较长的头文件和模板实例化,提升了编译效率。

延伸问答

Clang中的时间追踪功能是如何实现的?

通过添加-ftime-trace命令行标志,Clang可以生成Chrome Tracing格式的时间追踪输出,帮助识别编译瓶颈。

使用时间追踪功能可以发现哪些编译瓶颈?

可以识别预处理、解析、模板实例化等环节的瓶颈,特别是某些头文件的包含时间过长。

如何生成Chrome Tracing的.json文件?

使用-ftime-trace命令行标志编译代码后,Clang会在生成的对象文件旁边生成对应的Chrome Tracing .json文件。

在Clang中添加时间追踪功能的过程复杂吗?

尽管构建过程有些复杂,但整体上添加时间追踪功能的过程比预期要容易。

时间追踪功能对编译速度的优化有什么帮助?

通过可视化处理时间,开发者可以识别并优化处理时间较长的头文件和模板实例化,从而提升编译效率。

Clang的时间追踪功能是否会被纳入主线版本?

是的,时间追踪功能已经成功纳入LLVM/Clang的主线版本,并计划在Clang 9.0中发布。

➡️

继续阅读