bm(label_width = 0, *labels) {|rep| ... } -> [Benchmark::Tms]
[permalink][rdoc][edit]-
Benchmark.#benchmark メソッドの引数を簡略化したものです。
Benchmark.#benchmark メソッドと同様に働きます。
- [PARAM] label_width:
- ラベルの幅を指定します。
- [PARAM] labels:
- ブロックが Benchmark::Tms オブジェクトの配列を返す場合に指定します。
require 'benchmark' n = 50000 Benchmark.bm do |x| x.report { for i in 1..n; a = "1"; end } x.report { n.times do ; a = "1"; end } x.report { 1.upto(n) do ; a = "1"; end } end #=> # # user system total real # 1.033333 0.016667 1.016667 ( 0.492106) # 1.483333 0.000000 1.483333 ( 0.694605) # 1.516667 0.000000 1.516667 ( 0.711077)
以下のようにも書けます。
require 'benchmark' n = 50000 Benchmark.bm(7) do |x| x.report("for:") { for i in 1..n; a = "1"; end } x.report("times:") { n.times do ; a = "1"; end } x.report("upto:") { 1.upto(n) do ; a = "1"; end } end #=> # user system total real # for: 1.050000 0.000000 1.050000 ( 0.503462) # times: 1.533333 0.016667 1.550000 ( 0.735473) # upto: 1.500000 0.016667 1.516667 ( 0.711239)
集計を付けた場合
require 'benchmark' n = 50000 Benchmark.bm(7, ">total:", ">avg:") do |x| tf = x.report("for:") { for i in 1..n; a = "1"; end } tt = x.report("times:") { n.times do ; a = "1"; end } tu = x.report("upto:") { 1.upto(n) do ; a = "1"; end } [tf + tt + tu, (tf + tt + tu) / 3] end #=> # user system total real # for: 0.001467 0.004727 0.006194 ( 0.006193) # times: 0.003814 0.000000 0.003814 ( 0.003814) # upto: 0.003855 0.000003 0.003858 ( 0.003859) # >total: 0.009136 0.004730 0.013866 ( 0.013867) # >avg: 0.003045 0.001577 0.004622 ( 0.004622)
[SEE_ALSO] Benchmark.#benchmark