Ruby プログラムのためのプロファイラです。プロファイラとは効率改善のための調査に用いられるツールのことです。 profile ライブラリは各メソッドの実行時間に関する統計を出力します。
profile はそれ自身がオーバーヘッドになるためメソッド呼び出しあたりの処理時間がかなり遅くなります。
以下のように、ruby に -r profile オプションを付けて実行します。
$ ruby -r profile foo.rb
foo.rb の実行が終わると標準エラー出力にプロファイルが出力されます。
プロファイルは各メソッドの実行時間に関する統計からなりますが、この時間には大きく分けて 2 種類あります。ひとつは、メソッドが呼び出されてから返るまでの時間です。もうひとつは、全体の時間からそのメソッド内で行なわれた他の呼び出しに費やしたすべての時間を引いた時間です。以下の説明では前者を全体時間、後者を正味時間と呼ぶことにします。
プロファイルの結果は例えば次のようになります。
$ ruby -r profile sample/sieve.rb 1000 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47 … 略 … % cumulative self self total time seconds seconds calls ms/call ms/call name 33.87 1.49 1.49 11 135.65 214.49 Fixnum#step 31.38 2.88 1.38 2410 0.57 0.57 Array#[]= 27.84 4.10 1.23 2 613.28 2070.31 Range#each 4.26 4.29 0.19 1 187.50 234.38 Array#join 1.06 4.34 0.05 168 0.28 0.28 Fixnum#to_s 0.35 4.35 0.02 31 0.50 0.50 Fixnum#+ … 以下略 …
おのおのの行に現れる各フィールドの意味は左から順に次の通りです。