Flamegraph
Flamegraph support for arbitrary Ruby apps.
Note, flamegraph support is built in to rack-mini-profiler, just require this gem and you should be good to go. Type ?pp=flamegraph to create one for the current page.
Installation
Add this line to your application's Gemfile:
gem 'flamegraph'
And then execute:
$ bundle
Or install it yourself as:
$ gem install flamegraph
NOTE: For ruby 2.1+ you'll need to install a stackprof gem:
$ gem install stackprof
Usage
Note: Only supported on Ruby 2.0. Gathering stack traces is too slow on earlier versions of Ruby or JRuby
require 'flamegraph'
html = Flamegraph.generate do
# your work here
end
# or
Flamegraph.generate(filename) do
# your work here
end
Demo
Demo of: https://github.com/SamSaffron/flamegraph/blob/master/demo/demo.rb
http://samsaffron.github.io/flamegraph/demo.html
Demo of Discourse startup using: https://github.com/SamSaffron/flamegraph/blob/master/demo/rails_startup.rb
WARNING VERY SLOW, MAY CRASH BROWSER TAB http://samsaffron.github.io/flamegraph/rails-startup.html
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request