Profiler

Easy, targeted Ruby profiling

Overview

Profiler lets you easily measure the time spent in specified code paths.

If a certain code path is taking some time, call Profiler.start before it, Profiler.stop after it, and Profiler.check at significant checkpoints throughout it. Profiler will print information about all of the edges (between the nodes that are specified by Profiler.check) that run:

class MyClass
  def initialize
    Profiler.start
    do_something
    Profiler.stop
  end

  def do_something
    # ...
    Profiler.check
    # ...
    Profiler.check
    # ...
    100.times do
      Profiler.check
      # ...
    end
  end
end
Time      Calls Path
5.0e-05   1      -> my_class.rb:3:in `initialize'
0.00015   1     my_class.rb:3:in `initialize' -> my_class.rb:62:in `do_something'
0.0001    1     my_class.rb:62:in `do_something' -> my_class.rb:75:in `do_something'
0.01509   1     my_class.rb:75:in `do_something' -> my_class.rb:84:in `block in do_something'
0.0126    100   my_class.rb:84:in `block in do_something' -> my_class.rb:84:in `block in do_something'
0.00027   1     my_class.rb:84:in `block in do_something' -> my_class.rb:111:in `do_something'
Total time: 0.028271198272705078

Installation

Add Profiler to your Gemfile:

gem 'profiler'

License

Profiler is released under the MIT License. Please see the MIT-LICENSE file for details.