🕷 software projects

by ryan davis



sitemap
Please support my OSS Development.

zenprofile

A faster version of the standard library profiler plus extra tools.

** Note: ** This project is EOL’ed.

zenprofiler helps answer WHAT is being called the most. spy_on helps answer WHERE those calls are being made. ZenProfiler provides a faster version of the standard library ruby profiler. It is otherwise pretty much the same as before. spy_on provides a clean way to redefine a bottleneck method so you can account for and aggregate all the calls to it.

% ruby -Ilib bin/zenprofile misc/factorial.rb 50000
Total time = 3.056884
Total time = 2.390000
 total self self total
% time seconds seconds calls ms/call ms/call name
 50.70 1.64 1.64 50000 0.03 0.05 Integer#downto
 19.63 2.27 0.63 200000 0.00 0.00 Fixnum#*
 14.19 2.73 0.46 50000 0.01 0.05 Factorial#factorial
 9.93 3.05 0.32 1 320.36 3047.10 Range#each
 5.54 3.23 0.18 2 89.40 178.79 ZenProfiler#start_hook

Once you know that Integer#downto takes 50% of the entire run, you can use spy_on to find it:

1
2
3
4
5
if ENV['SPY'] then
 require 'spy_on'
 Integer.spy_on :downto
end
% SPY=1 ruby -Ilib misc/factorial.rb 50000
Spying on Integer#downto
Integer.downto
50000: total
50000: ./misc/factorial.rb:6:in `factorial' via 
 ./misc/factorial.rb:6:in `factorial'

Get The Code

If you just want to use zenprofile, you can install it via RubyGems:
gem install zenprofile
Fork me on GitHub If you want to hack on zenprofile, clone it from GitHub:
git clone git://github.com/seattlerb/zenprofile

Latest Activity

Please support my OSS Development.
“More matter, with less art” — Gertrude, Hamlet.

AltStyle によって変換されたページ (->オリジナル) /