2005-03-22 (Tue) [長年日記]
_ 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]
みたいなコードをあちこちに書いてました:(