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 ドキュメント。