1. 为什么需要火焰图来优化代码性能
记得刚入行那会儿,优化代码性能全靠猜。有一次我花了三天时间优化一个排序算法,结果程序整体运行时间只减少了0.3秒。后来 mentor 扔给我一句:"别急着改代码,先搞清楚时间都花在哪了"。这句话点醒了我——性能优化必须有的放矢。
Hotspot 火焰图就是帮我们找到"矢"的神器。它把复杂的性能数据变成直观的彩色火焰,横向表示时间消耗比例,纵向展示调用栈关系。我最近用它分析过一个图像处理项目,发现80%的时间竟然消耗在一个不起眼的日志函数上,优化后整体性能直接提升5倍。
传统性能分析工具最大的问题是信息过载。perf report 输出的调用树动辄几百行,看得人头晕眼花。而火焰图用两个维度就把关键信息交代清楚了:
- 看宽度:哪个函数/代码块最耗时间
- 看高度:调用链深度和层级关系
去年优化过一个金融计算系统,用 perf + Hotspot 组合拳,三小时就定位到性能瓶颈——一个被频繁调用的 JSON 序列化函数。这种问题靠人肉分析可能一周都发现不了。
2. 快速搭建Hotspot分析环境
2.1 基础工具安装
在 Ubuntu 20.04 上配置完整分析环境,实测下来最稳的方案是:
# 安装perf和调试符号
sudo apt update
sudo apt install linux-tools-$(uname -r) linux-tools-generic \
libdw-dev libelf-dev debuginfod
# 验证perf是否正常工作
perf record -F 99 -a -g -- sleep 5
这里有个坑要注意:内核版本必须匹配。我有次在 WSL 里折腾半


470

被折叠的 条评论
为什么被折叠?



