一款低开销的 Python 追踪工具,将代码执行过程记录并以交互式时间线可视化。
flamegraph-rs/flamegraph
基于 Rust 的火焰图生成工具,可对 Cargo 项目或任意可执行文件进行性能剖析,无需 Perl。
- Star
- 6,053
- Fork
- 194
- 未关闭 Issue
- 75
- 最近提交
- 5天前
这是什么?
flamegraph 用于生成火焰图,展示程序的时间主要消耗在哪些函数上。它可以通过 cargo flamegraph 子命令分析 Cargo 项目,也可以分析任意可执行文件,或通过 PID 附加到正在运行的进程。调用栈采样由各平台的原生工具完成,结果基于 Inferno 库渲染为可交互的 SVG。
在 Linux 上依赖 perf,在 macOS 上依赖 xctrace,在 Windows 上使用 blondie 库,安装了 DTrace 时则优先使用它。可选参数包括构建 profile、目标二进制、示例、基准测试或测试目标、采样频率、配色方案,以及自定义 perf 或 dtrace 命令。
文档还介绍了如何阅读火焰图,并整理了性能测量的基本方法,例如 USE 方法,以及优化前先建立基准测试的建议。
核心功能
- 01通过 cargo flamegraph 分析 Cargo 项目、二进制、示例、基准测试和测试目标。
- 02支持通过 PID 附加到正在运行的进程。
- 03Linux 使用 perf,macOS 使用 xctrace,Windows 使用 blondie 或 DTrace。
- 04生成可在浏览器中交互查看的 SVG 文件。
- 05支持自定义 perf 或 dtrace 命令参数,并提供多种配色方案。
- 06flamegraph 命令支持 bash、fish、zsh、powershell 和 elvish 的自动补全。
适用场景
- 在优化 Rust 应用前,定位耗时最多的热点函数。
- 无需安装 Perl 或手动搭建管道,即可分析 C 或 C++ 的可执行文件。
- 对比基准测试或测试运行中的时间分布。
- 通过进程 ID 附加到正在运行的服务进行剖析。
快速上手
- 1
使用 Cargo 安装 flamegraph 二进制文件
cargo install flamegraph - 2
分析一个 Rust 项目
cargo flamegraph - 3
分析任意可执行文件
flamegraph -- /path/to/binary
使用前须知
- 性能分析依赖平台工具:Linux 使用 perf,macOS 使用 xctrace,Windows 使用 blondie 或 dtrace。
- 在 Linux 上使用 lld(Rust 1.90.0 起为默认)或 mold 时,必须添加 --no-rosegment 链接参数,否则调用栈可能不准确。
- 非 root 用户使用 perf 可能需要降低 perf_event_paranoid 的值,这会削弱系统安全性。
收录于专题
标签
常见问题
- flamegraph 是什么?
- 基于 Rust 的火焰图生成工具,可对 Cargo 项目或任意可执行文件进行性能剖析,无需 Perl。 flamegraph 用于生成火焰图,展示程序的时间主要消耗在哪些函数上。它可以通过 cargo flamegraph 子命令分析 Cargo 项目,也可以分析任意可执行文件,或通过 PID 附加到正在运行的进程。调用栈采样由各平台的原生工具完成,结果基于 Inferno 库渲染为可交互的 SVG。
- flamegraph 可以免费使用吗?用的什么许可证?
- flamegraph 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
- flamegraph 还在维护吗?
- 活跃维护中。flamegraph 最近一次提交是在 2026年11月2日。
- flamegraph 适合用来做什么?
- 在优化 Rust 应用前,定位耗时最多的热点函数。 无需安装 Perl 或手动搭建管道,即可分析 C 或 C++ 的可执行文件。 对比基准测试或测试运行中的时间分布。 通过进程 ID 附加到正在运行的服务进行剖析。
- flamegraph 怎么安装和运行?
- 使用 Cargo 安装 flamegraph 二进制文件: cargo install flamegraph 分析一个 Rust 项目: cargo flamegraph 分析任意可执行文件: flamegraph -- /path/to/binary
- 在哪里获取 flamegraph?
- 源代码和安装说明在 GitHub 上:https://github.com/flamegraph-rs/flamegraph
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
7775+6 本周480PythonApache-2.0更新于 上个月
用 C 编写的 CPython 栈采样器,无需修改代码即可低开销地分析运行中的 Python 进程。
2215+4 本周68CGPL-3.0更新于 10天前
免费的 Windows 性能分析工具,用于定位 CPU 和内存相关的性能问题,并对 .NET 运行时代码提供专门支持。
4779+1 本周781C#MIT维护活跃更新于 昨天
开源的追踪与性能分析套件,包含 SDK、守护进程和浏览器端 UI,用于分析 Android、Linux 等系统的 trace。
6771+50 本周938C++Apache-2.0更新于 15小时前
面向 Windows 和 Linux 的任务管理器替代品,可深入查看进程的线程、内存、句柄、网络连接和模块。
3840+6 本周303CGPL-3.0维护活跃更新于 26天前
一个独立的命令行工具,监视文件变化并自动执行指定命令。
7271+7 本周210RustApache-2.0维护活跃更新于 18小时前