2017/02/15

rubyで実行時間の解析

rubyで実行時間の解析をする方法のメモ.

ruby-profというライブラリを使う.
例えば以下のように,RubyProf.start と RubyProf.stop の間に解析したいコードを書けば良い.

require 'ruby-prof'

# 解析スタート
RubyProf.start

sleep(1)

# 解析終了
result = RubyProf.stop

# 結果を出力
printer = RubyProf::FlatPrinter.new(result)
printer.print(STDOUT)


結果は以下の通り.
%selfは全体に占める割合.

Measure Mode: wall_time
Thread ID: 70297835660380
Fiber ID: 70297835966400
Total: 1.005130
Sort by: self_time

 %self      total      self      wait     child     calls  name
 99.99      1.005     1.005     0.000     0.000        1   Kernel#sleep

  0.01      1.005     0.000     0.000     1.005        1   Global#[No method]



KCacheGrind というツールを使えば,ビジュアライズもできるらしい.


加えて,

RubyProf.measure_mode = RubyProf::MEMORY

とコードに加えれば,メモリの解析もできるらいしが,rubyのパッチが必要.
https://github.com/ruby-prof/ruby-prof
https://github.com/skaes/rvm-patchsets

rvmでインストールするらしいが,rbenvでインストールしたいと思って少し調べたが面倒そうなので諦めた.


0 件のコメント:

コメントを投稿