Last Update: 2012-03-24 14:31:00 -0600

0.11.0.rc1 (2012-03-24)

  • On Windows, use QueryPerformanceCounter and QueryPerformanceFrequency to measure CPU time instead of rdtsc. This change is based on Microsoft's recommendation (Charlie Savage).

  • On Windows use GetProcessTimes to return real PROCESS_TIME times instead of wall times (Charlie Savage).

  • Big internal refactoring of C code to make RubyProf easier to understand and extend (Charlie Savage).

  • Profile results are now returned as instances of a new class RubyProf::Profile. The old api is supported via a compatability layer that at some point will be deprecated. (Charlie Savage).

  • Split out tests for cpu_time, process_time and wall_time into separate files (Charlie Savage).

  • Dropped support for Ruby 1.8.4 and 1.8.6 - does anybody still use these? (Charlie Savage).

  • Added support for sorting results by total, self, wait and child times (Jan Suchal)

  • Added tests for sorting behaviour & removed options from constructor to print method (Jan Suchal)

  • Fix line number tests due to changes at top of file (Charlie Savage).

  • Add encoding statement to top of all files for Ruby 1.9.x compatability (Charlie Savage).

  • Add def file for VC to avoid the whole declspec annoyance (Charlie Savage).

  • Update test suite to ensure current working directory is correct (Charlie Savage).

  • Modernize gem file and remove various custom/home grown solutions that aren't needed anymore (Charlie Savage).

  • Remove custom mingw build scripts, use rake compiler instead (Charlie Savage).

  • Fixes for compiling with VC 2010 (Charlie Savage).

0.10.8 (2011-07-06)

  • 1.9.3 super class (Roger Pack)

0.10.7 (2011-05-09)

  • Fix a bug with REE's GC stats. Issue #53 [thanks graaff]

0.10.6 (2011-04-29)

  • Slightly more normalized url for linux/windows links to files.

0.10.5 (2011-04-20)

  • 1.8.6 compat for -v command (bug fix)

0.10.4 (2011-04-20)

  • Faster load time for ruby-prof itself.


  • Can cleanly load before rubygems now.


  • Fix for 1.9.2, os x for latest commits (thanks skaes!)


  • Fix bug in linux wall time, also load with only relative paths so that you can use it to benchmark rubygems startup overhead, itself.


  • Some rdoc changes, for linux wall time attempt to use higher granularity (thanks to all the contributors for this round!)


  • Make graphviz work on 1.8.6

  • Roll back some 1.9.2 optimizations until I can figure out what caused them.


  • Add a graphviz output


  • measurements for recursive methods are now correct

  • gave up on splitting up recursive methods according to call depth

  • made it possible to eliminate methods from profiling results

  • new printer for call stack visualization

  • new printer to print several profiles in one run

  • HTML profiles contain Textmate links so you can jump to the source code easily

  • producing an event log is now a runtime option

0.7.10 (2009-01-22)

  • fix SEGFAULT in 1.9

  • add new printer flat_printer_with_line_numbers

0.7.7 (2009-01-13)

0.7.6 (2009-12-31)

  • fix some tests for 1.9 (no real code changes)

0.7.5 (2009-12)

  • fix a GC collection bug (nobu's patch).

  • correctly report recursive call depths (Kevin Scaldeferri).

  • sort methods on output (Kevin Scaldeferri).

0.7.3 (2008-12-09)

  • Fixed compile error with new x86_64 code using GCC.

0.7.2 (2008-12-08)

  • Fixed major bug in printing child methods in graph reports.

  • Fixes for supporting x86_64 machines (Diego Pettenò)

0.7.1 (2008-11-28)

  • Added new AggregateCallInfo class for printers to make results easier to read. Take this call sequence for example:

    A   B   C
    |   |   |
    Z   A   A
        |   |
        Z   Z

    By default, ruby-prof will show that Z was called by 3 separate instances of A. In an IDE that is helpful but in a text report it is not since it makes the report much harder to read. As a result, printers now aggregate together callers (and children), matching ruby-prof's output from versions prior to 0.7.0.

  • Fixes for supporting x86_64 machines (Matt Sanford)

0.7.0 (2008-11-04)


  • Added two new methods - RubyProf.resume and RubyProf.pause. RubyProf.resume takes an optional block, which ensures that RubyProf.pause is called. For example:

    10.times do |i|

    RubyProf.resume do
      # Some long process


    result = RubyProf.stop

  • Added support for profiling tests that use Ruby's built-in unit test framework (ie, test derived from Test::Unit::TestCase). To enable profiling simply add the following line of code to your test class:

    include RubyProf::Test

    By default, profiling results are written to the current processes working directory. To change this, or other profiling options, simply modify the PROFILE_OPTIONS hash table as needed.

  • Used the new support for profiling test cases to revamp the way that Rails profiling works. For more information please refer to RubyProf's documentation.

  • Keep track of call stack for each method to enable more powerful profile visualizations in Integrated Development Environments (Hin Boean, work supported by CodeGear).

  • Expose measurements to Ruby (Jeremy Kemper).

  • Add support for additional memory measurements modes in Ruby 1.9 (Jeremy Kemper).

  • Add support for Lloyd Hilaiel's Ruby patch for measuring total heap size.

    See (Jeremy Kemper).


  • RubyProf.profile no longer crashes if an exception is thrown during a profiling run.

  • Measure memory in fractional kilobytes rather than rounding down (Jeremy Kemper)

0.6.0 (2008-02-03)

ruby-prof 0.6.0 adds support for Ruby 1.9 and memory profiling.


  • Added support for ruby 1.9 (Shugo Maeda)

  • Added support for outputting printer results to a String, Array or IO object (Michael Granger)

  • Add new memory profiling mode. Note this mode depends on a patched Ruby interpreter (Alexander Dymo)


  • Improvements to GraphHtmlPrinter including updated documentation, fixes for min_time support, ability to specify templates using strings or filenames, and table layout fixes (Makoto Kuwata)

  • Fixes to scaling factor for calltrees so that precision is not lost due to the conversion to doubles (Sylvain Joyeux)

  • Changed constant ALLOCATED_OBJECTS to ALLOCATIONS in the C code to match the Ruby code (Sylvain Joyeux)

  • Added support for calltree printer to ruby-prof binary script (Sylvain Joyeux)

  • Fix support for the allocator measure mode to extconf.rb (Sylvain Joyeux)

  • Honor measure mode when specified on the command line (Sylvain Joyeux)

  • Sorting of methods by total time was incorrect (Dan Fitch, Charlie Savage)

  • Fix ruby-prof to work with the latest version of GEMS (Alexander Dymo)

  • Always define MEASURE_CPU_TIME and MEASURE_ALLOCATIONS in Ruby code, but set their values to nil if the functionality is not available.

0.5.2 (2007-07-19)

ruby-prof 0.5.2 is a bug fix release.


  • Include missing rails plugin

0.5.1 (2007-07-18)

ruby-prof 0.5.1 is a bug fix and performance release.


  • Significantly reduced the number of thread lookups by caching the last executed thread.


  • Properly escape method names in HTML reports

  • Fix use of -m and --min-percent command line switches

  • Default source file information to ruby_runtime#0 for c calls

  • Moved rails_plugin to top level so it is more obvious

  • Updated rails_plugin to write reports to the current Rails log directory

  • Added additional tests

0.5.0 (2007-07-09)


  • Added support for timing multi-threaded applications

  • Added support for 64 bit systems (patch from Diego 'Flameeyes' Petten)

  • Added suport for outputting data in the format used by KCacheGrind (patch from Carl Shimer)

  • Add filename and line numbers to call tree information (patch from Carl Shimer)

  • Added Visual Studio 2005 project file.

  • Added replace-progname switch, als rcov.

  • Added better support for recursive methods

  • Added better support for profiling Rails applications


  • Fixes bug when the type of an attached object (singleton) is inherited from T_OBJECT as opposed to being a T_OBJECT (identified by Francis Cianfrocca)

  • ruby-prof now works in IRB.

  • Fix sort order in reports.

  • Fixed rdoc compile error.

  • Fix tabs in erb template for graph html report on windows.

0.4.1 (2006-06-26)


  • Added a RubyProf.running? method to indicate whether a profile is in progress.

  • Added tgz and zip archives to release


  • Duplicate method names are now allowed

  • The documentation has been updated to show the correct API usage is RubyProf.stop not RubyProf.end

0.4.0 (2006-06-16)


  • added support for call graphs

  • added support for printers. Currently there is a FlatPrinter, GraphPrinter and GraphHtmlPrinter.

  • added support for recursive methods

  • added Windows support

  • now packaged as a RubyGem


  • Fixes bug where RubyProf would crash depending on the way it was invoked - for example, it did not run when used with Arachno Ruby's customized version of Ruby.