Techioz Blog

Ruby メソッドの時間の測定とベンチマーク

概要

Ruby でメソッドとそのメソッド内の個々のステートメントにかかる時間を測定するにはどうすればよいですか。以下のメソッドが表示された場合、メソッドにかかる合計時間と、データベースアクセスと Redis アクセスにかかる時間を測定したいと思います。すべてのステートメントの前に Benchmark.measure を書きたくありません。 Ruby インタープリタはこれを行うためのフックを提供しますか?

def foo
# code to access database
# code to access redis. 
end

解決策

最も簡単な方法:

require 'benchmark'

def foo
 time = Benchmark.measure do
  code to test
 end
 puts time.real #or save it to logs
end

出力例:

2.2.3 :001 > foo
  5.230000   0.020000   5.250000 (  5.274806)

値は、CPU 時間、システム時間、合計および実際の経過時間です。

ソース: Ruby ドキュメント。