Ruby標準ライブラリのbenchmarkを使って処理速度を測定してみました。
使い方は下の通りです。
配列へのpushの10000回ループと100回ループを測定しています。
require 'benchmark' Benchmark.bm(10) do |x| x.report("10,000回") do arr = [] (0...10000).each { |i| arr.push(i) } end x.report("100回") do arr = [] (0...100).each { |i| arr.push(i) } end end
結果は下の通りです。
realが実際にかかった時間、userがUser CPU timeでsystemがSysten CPU time、totalはTotal CPU timeです。
CPU timeはこちらの記事が参考になりました。
real time/user CPU time/system CPU timeの違いをメモ | Siguniang's Blog
Benchmark.bmの引数に渡している数字はラベルのサイズです。
引数を省略すると下のようにずれてしまうので入れています。
bmメソッドの代わりにbenchmarkメソッドを使うと出力のカスタマイズができます。
require 'benchmark' Benchmark.benchmark("実際の時間\n", 10, "%10.6r\n") do |x| x.report("10,000回") do arr = [] (0...10_000).each { |i| arr.push(i) } end x.report("100回") do arr = [] (0...100).each { |i| arr.push(i) } end end
手軽に実行時間を測定したい時はrealtimeメソッドも便利です。
このメソッドは実行時間を返してくれます。
require 'benchmark' time = Benchmark.realtime do arr = [] (0...10_000).each { |i| arr.push(i) } end p time