# profiler.rb

Profiler__.start_profile 実行から、Profiler__.stop_profile までの 区間の実行コードのプロファイルを取得する。

現在、profile.rb は、profiler.rb を利用して実装されている。

    require 'profiler.rb'

    Profiler__.start_profile

    require 'tk'

    Profiler__.print_profile(STDOUT)

    # =>
     %   cumulative   self              self     total
    time   seconds   seconds    calls  ms/call  ms/call  name
    51.64     1.10      1.10        3   366.67   776.67  Kernel.require
    17.37     1.47      0.37        1   370.00   370.00  TclTkIp#initialize
     8.92     1.66      0.19      514     0.37     0.37  Module#method_added
     6.57     1.80      0.14        1   140.00   140.00  Profiler__.start_profile
     4.23     1.89      0.09       15     6.00    10.67  Kernel.extend
     3.29     1.96      0.07       15     4.67     4.67  Module#extend_object
     3.29     2.03      0.07      133     0.53     0.53  Kernel.singleton_method_added
     2.82     2.09      0.06       28     2.14     2.86  Module#attr
     1.88     2.13      0.04       19     2.11     2.11  Module#private
     1.41     2.16      0.03       29     1.03     1.38  Module#include
     0.94     2.18      0.02       10     2.00     4.00  Module#module_function
     0.94     2.20      0.02        2    10.00    10.00  Array#collect
       :
       :
    <snip>

## モジュール関数:

`Profiler__.start_profile`

  プロファイルの取得を開始する。

`Profiler__.stop_profile`

  プロファイルの取得を停止する。

`Profiler__.print_profile(file)`

  stop_profile を実行し、プロファイルの結果を file に出力する。 file.`printf` が定義されている必要がある。

link: [profile.rb]
reverse links: [1.6.8から1.8.0への変更点(まとめ)] [ruby 1.7 feature] [添付ライブラリ]