http://www.ruby-lang.org/ja/man/?cmd=view;name=profile
出力内容をきちんと理解していなかったのでおさらい。
簡単なスクリプトで実験。
def bar sleep 7 end def zoo 1000.times{|i| puts i} end def foo bar zoo end foo foo
% cumulative self self total
time seconds seconds calls ms/call ms/call name
55.64 0.22 0.22 2000 0.11 0.17 Kernel.puts
20.26 0.30 0.08 4000 0.02 0.02 IO#write
12.31 0.34 0.05 2000 0.02 0.02 Fixnum#to_s
11.79 0.39 0.05 2 23.00 195.00 Integer#times
0.00 0.39 0.00 3 0.00 0.00 Module#method_added
0.00 0.39 0.00 2 0.00 195.00 Object#foo
0.00 0.39 0.00 2 0.00 0.00 Object#bar
0.00 0.39 0.00 2 0.00 195.00 Object#zoo
0.00 0.39 0.00 2 0.00 0.00 Kernel.sleep
0.00 0.39 0.00 1 0.00 390.00 #toplevel
とりあえず…
- sleepの時間はカウントされない
- foo()の「total ms/call」には呼び出したbar()の時間も含まれる(当たり前か…)
- foo()の「self ms/call」には呼び出したbar()の時間も含まれないみたい
- なので、#toplevelの「seconds」「total ms/call」がプログラム全体の実行時間になるのかな