トップ «前の日(03-21) 最新 次の日(03-23)» 追記   RSS 1.0 FEED  

Journal InTime



2005-03-22 (Tue)

_ [Ruby] ruby-prof-0.1

Ruby用のプロファイラをリリースしました。 以下のいずれかが必要です。

  • ruby 1.9.0 (2005-03-17) 以降
  • ruby 1.8.2 (2005-03-22) 以降

使い方はprofile.rbとほとんど同じ。

$ ruby-cvs_1_8 -v -runprof fib.rb
ruby 1.8.2 (2005-03-22) [i686-linux]
use CPU clock counter for profiling
6765
  %%   cumulative   self              self     total
 time   seconds   seconds    calls  ms/call  ms/call  name
 90.84    0.074     0.074        1    73.94    81.39  #toplevel
  3.66    0.077     0.003    21890     0.00     0.00  Fixnum#-
  3.61    0.080     0.003    21891     0.00     0.00  Fixnum#<
  1.73    0.081     0.001    10945     0.00     0.00  Fixnum#+
  0.12    0.081     0.000        2     0.05     0.06  IO#write
  0.01    0.081     0.000        1     0.01     0.01  Fixnum#to_s
  0.01    0.081     0.000        1     0.01     0.12  Kernel.print
  0.00    0.081     0.000        1     0.00     0.00  Module#method_added

profile.rbと比べるとかなり高速になっていると思います、 と思ったら結果がおかしいですね...Ruby本体の修正にバグがありました、すみません。set_trace_funcを使う場合は問題なかったのでテストが通ってました:(

先ほど修正をcommitしたので、今のruby_1_8ブランチの先端では以下のように正しい結果が返ると思います。

$ ruby-cvs_1_8 -runprof ~/ruby/fib.rb
6765
  %%   cumulative   self              self     total
 time   seconds   seconds    calls  ms/call  ms/call  name
 81.55    0.037     0.037    21891     0.00     0.03  Object#fib
  7.73    0.041     0.004    21890     0.00     0.00  Fixnum#-
  6.94    0.044     0.003    21891     0.00     0.00  Fixnum#<
  3.24    0.045     0.001    10945     0.00     0.00  Fixnum#+
  0.26    0.045     0.000        1     0.12    45.44  #toplevel
  0.22    0.045     0.000        2     0.05     0.06  IO#write
  0.03    0.045     0.000        1     0.01     0.12  Kernel.print
  0.02    0.045     0.000        1     0.01     0.01  Fixnum#to_s
  0.00    0.045     0.000        1     0.00     0.00  Module#method_added

_ [仕事] SQLの高速化

何とか目標に近い数値を達成。 やっぱり、プロファイラが速いと作業がラク。 ちなみに、今までは、

st = Time.now
...
p [:foo, Time.now - st]

みたいなコードをあちこちに書いてました:(