ruby-prof-flamegraph
A ruby-prof printer that outputs a fold stack file that's compatible with FlameGraph.
It is created based on RubyProf::CallStackPrinter
.
Awesomeness
FlameGraph is a way to visualize stack trace, making it very obvious where in the program takes the longest time. It is a Perl script takes a "fold stack" file and generates a nice, interactive SVG. The fold stack is usually generated from DTrace or Prof data using stackcollapse.pl, which is included with FlameGraph.
I created this gem because I want to find out where the bottleneck is in SlimWiki's specs, but I don't know DTrace and just want the result quick.
I did not expect this, but generating a company name from Faker causes 44 YAML files to be parsed, taking 28 seconds.
(TODO include image)
To learn more about Flame Graphs, check these out:
- Official Flame Graphs Website by Brendan Gregg
- Node.js in Flames, which is the article that introduced me to flame graph (via Node Weekly Issue #62)
- Blazing Performance with Flame Graphs talk at USENIX/LISA13 (slideshare) (video)
Installation
gem 'ruby-prof-flamegraph'
Usage
Just require 'ruby-prof-flamegraph
and use RubyProf::FlameGraphPrinter
as your printer for ruby-prof.
For vanilla ruby-prof, see example.rb.
For rspec-prof, RSpecProf.printer_class = RubyProf::FlameGraphPrinter
Example
See the result in example.svg