FlameGraphs-Instruments是一个基于Xcode Instruments traces文件生成可交互svg火焰图的命令行工具
调研了两个火焰图实现的源码。
《性能之巅》的作者, Brendan Gregg 提出的Flame Graphs 使用可交互的svg格式。 缺点是 stackcollapse-instruments.pl 已经多年没有更新,最新traces格式已无法解析。
使用Swift实现,主要功能解析csv格式数据,并生成png、jpg、pdf、html格式火焰图,简单易用,缺点是生成的格式无法交互并查看更深层的堆栈,堆栈层级过高文字展示不全。
融合以上两个项目的优点,FlameGraphs-Instruments做了以下优化
- 支持Instruments traces解析.
- 输出可交互svg格式,支持点击,层级查看.
- 支持解析
CPU Profiler
、Time Profiler
. - 过滤Weight占比0.0%堆栈.
$ git clone [email protected]:Kelvenbit/FlameGraphs-Instruments.git
- 运行Instruments并选择
Time Profiler
或者CPU Profiler
- 选中堆栈
- 菜单
Edit > Deep copy ⇧⌘C
复制完整堆栈到剪切板 - 进入目录
cd FlameGraphs-Instruments
- 执行
swift run FlameGraph output.svg
或者swift run FlameGraph -f intput.csv output.svg
FlameGraphs-Instruments 使用 MIT 许可证,详情见 LICENSE 文件。