如何处理clang++ -fsave-optimization-record生成文件?含-fdiagnostics-show-hotness咨询
处理clang优化记录文件(file.opt.yaml)的工具
- 直接文本查看:作为YAML格式文件,用vim、VS Code等普通文本编辑器即可打开浏览,适合快速查看结构,但内容可能较为冗长。
- opt-viewer(clang官方可视化工具):LLVM项目自带的Python脚本工具,能将YAML优化记录转换为交互式HTML报告。操作步骤:
- 获取LLVM仓库中
llvm/utils/opt-viewer目录下的脚本 - 执行命令:
opt-viewer.py file.opt.yaml -o output_directory
生成的HTML会按优化类型、函数分组展示,标注优化的应用/阻止情况,还附带代码高亮,直观性很强。
- 获取LLVM仓库中
- llvm-opt-report:LLVM提供的命令行工具,直接解析YAML文件并输出结构化文本报告。运行
llvm-opt-report file.opt.yaml即可快速统计各类优化的数量、涉及的函数等信息,适合终端环境下快速分析。
clang++ -fdiagnostics-show-hotness参数的使用与配套工具
参数作用
该参数让clang在编译诊断(警告、提示)中附加代码“热度”信息,热度基于运行时采样/仪器化剖析数据,代表代码执行频率,帮助优先聚焦高频路径上的问题。
使用前提
必须配合剖析数据文件使用,需通过-fprofile-sample-use=<采样文件>或-fprofile-instr-use=<仪器化剖析文件>加载剖析数据,否则热度信息不会生效。
使用示例
clang++ -fprofile-sample-use=app.profile -fdiagnostics-show-hotness -O2 main.cpp
编译时,诊断信息会附带类似[Hotness: 87/100]的标记,数值越高表示代码执行越频繁。
配套工具
- llvm-profdata:用于处理剖析数据,支持合并多个采样文件、转换格式。例如合并多个采样文件:
确保剖析数据能被clang正确识别加载。llvm-profdata merge -output=merged.profile profile1.sample profile2.sample - clang-tidy:结合
clang-tidy使用时,静态检查警告也会带上热度标记,帮助优先修复高频代码中的问题。示例命令:clang-tidy -checks='performance-*' -extra-arg="-fprofile-sample-use=app.profile" -extra-arg="-fdiagnostics-show-hotness" main.cpp
内容的提问来源于stack exchange,提问作者Autechre
相关产品推荐
相关产品推荐

