diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-02-23 23:15:44 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-02-23 23:15:44 +0000 |
commit | 480ea9ffae1b656a129f2f9f1d900d9d7d88d25e (patch) | |
tree | 57a4a318314f981c76b79b30087d14e449ae46a8 /lib | |
parent | 774cf315e838216aa8b4c138173484aa2388c380 (diff) | |
download | ruby-480ea9ffae1b656a129f2f9f1d900d9d7d88d25e.tar.gz |
* lib/profiler.rb: Add Profiler documentation by Gonzalo Rodriguez.
[Bug #5816]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34773 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r-- | lib/profiler.rb | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/lib/profiler.rb b/lib/profiler.rb index a4b8889093..0dd02687af 100644 --- a/lib/profiler.rb +++ b/lib/profiler.rb @@ -1,3 +1,62 @@ +# Profile provides a way to Profile your Ruby application. +# +# Profiling your program is a way of determining which methods are called and +# how long each method takes to complete. This way you can detect which +# methods are possible bottlenecks. +# +# Profiling your program will slow down your execution time considerably, +# so activate it only when you need it. Don't confuse benchmarking with +# profiling. +# +# There are two ways to activate Profiling: +# +# == Command line +# +# Run your Ruby script with <code>-rprofile</code>: +# +# ruby -rprofile example.rb +# +# If you're profiling an executable in your <code>$PATH</code> you can use +# <code>ruby -S</code>: +# +# ruby -rprofile -S some_executable +# +# == From code +# +# Just require 'profile': +# +# require 'profile' +# +# def slow_method +# 5000.times do +# 9999999999999999*999999999 +# end +# end +# +# def fast_method +# 5000.times do +# 9999999999999999+999999999 +# end +# end +# +# slow_method +# fast_method +# +# The output in both cases is a report when the execution is over: +# +# ruby -rprofile example.rb +# +# % cumulative self self total +# time seconds seconds calls ms/call ms/call name +# 68.42 0.13 0.13 2 65.00 95.00 Integer#times +# 15.79 0.16 0.03 5000 0.01 0.01 Fixnum#* +# 15.79 0.19 0.03 5000 0.01 0.01 Fixnum#+ +# 0.00 0.19 0.00 2 0.00 0.00 IO#set_encoding +# 0.00 0.19 0.00 1 0.00 100.00 Object#slow_method +# 0.00 0.19 0.00 2 0.00 0.00 Module#method_added +# 0.00 0.19 0.00 1 0.00 90.00 Object#fast_method +# 0.00 0.19 0.00 1 0.00 190.00 #toplevel + module Profiler__ # internal values @@start = @@stack = @@map = nil |