Node.js 火焰图性能分析(Mac)

Node.js performance's analysis through flame graph (on Mac)

Flame graphs are a visualization of profiled software, allowing the most frequent code-paths to be identified quickly and accurately — Brendan Gregg on flame graph

使用 node --perf-basic-prof 和 Xcode 仪器( 在 Mac 上)应该有助于生成用于性能分析的火焰图。跟随 this guide,这很容易:

  1. made node.js 0.12 使用 node --perf-basic-prof app.js
  2. 生成 perf-<pid>.map
  3. 使用 Xcode 仪器时间分析器记录堆栈(导出为 profile.csv
  4. 使用Brendan Gregg perl tools生成火焰图,使用./stackcollapse-instruments.pl profile.csv | ./flamegraph.pl > graph.svg

遗憾的是,生成的火焰图无法从 perf-<pid>.map 中获益,因此留下方法地址而不是它们的名称(1cfc9a09b880 而不是 LazyCompile:~ /node_modules/benchmark/benchmark.js:1870)。

有什么方法可以将映射/符号提供给 Xcode 仪器,使其生成带有方法名称的 csv 文件 (this doesn't work) ?

这可以通过 node flamegraph module 的 ui 来完成。

ps。 a pull request 提供向 npm 命令行工具添加选项以允许键入 flamegraph -t instruments -f profile.csv -m perf-4499.map -o flamegraph.svg