irb上でrubyスクリプトの実行速度を測る
例えば foo.rb
というRubyスクリプトの実行時間をシェル上で知りたかったらtime foo.rb
とすればいいわけですが、残念ながらirb
上ではtime
コマンドをそのまま使うことができません。
解決策
標準で用意されているBenchmark
ライブラリを使えばOK.
irb(main)> require 'benchmark' irb(main)> puts Benchmark.measure { "a"*1_000_000_000 } 0.350000 0.400000 0.750000 ( 0.835234)
こんな感じで表示されます。
0.750000
がCPUを使った時間で0.835234
が実際にかかった時間。
気にしないといけないのはCPUを実際に使ってたじかんなので前者のほうになります。
ちなみに自分の環境だと裏で動画のエンコードを走らせながらVirtualBox上のOSでやってたのでCPU使用時間の50倍ぐらい実際にかかってしまってました。
参考
[Module: Benchmark (Ruby 2.1.1)][1]
[When benchmarking, what causes a lag between CPU time and “elapsed real time”? – Stack Overflow][2]