読者です 読者をやめる 読者になる 読者になる

コモディティ化するエンジニア

組み込み系のSI屋から、Railsを扱うWeb系のベンチャーに転職した筆者が、日々ミジンコなりに情報を綴るブログ。

Rubyで実行時間計測をラップするコードを書いてみた

Ruby

Rubyでちょっとしたコードを書いた時、ふと、
「実行時間はどのぐらいかかっているんだろうか?」
と思うことがあります。

この疑問への解は、既に先人の方々がまとめているため、リンクを紹介しておきます。

qiita.com

qiita.com

今回やったこと

Time.nowでやると、コードは簡潔に書けるが、ms単位でしか測れないため、短時間で実行が終わるコードには使えない。」
benchmark を使うと、詳細な実行時間を取れるが、実行時間を表示するコードを書くのに数ステップ書かないといけない。」

というわけで、「1ステップで書けて」「詳細な実行時間が取得できる」ように、benchmarkの利用部をラップしたコードを書いてみました。

コード

使い方

使い方は簡単。 requireしていただいた上で、

measure do { __計測したい処理__ }

を書くだけです。 ブロックで渡した処理が、そのままライブラリ側の yield で実行されます。
ライブラリ側では Benchmark.measure do にブロックで渡した yield が実行されます。
(言い方を変えれば、計測区間の中に、計測したい処理を挟み込めるようにしています。)
その後、結果を出力する処理まで含めていることで、「簡潔に」「詳細な結果」を出力できるようにしています。

やっていることは単純ですが、サンドボックス的なプロジェクトに置いておくと、
簡単に実行時間計測を書くことができて便利です。