Programming Tutorials

(追記) (追記ここまで)

bmbm(width = 0) {|job| ...} in Ruby

By: Jeya in Ruby Tutorials on 2009年03月03日 [フレーム]

Sometimes benchmark results are skewed because code executed earlier encounters different garbage collection overheads than that run later. bmbm attempts to minimize this effect by running the tests twice, the first time as a rehearsal in order to get the runtime environment stable, the second time for real. GC.start is executed before the start of each of the real timings; the cost of this is not included in the timings. In reality, though, there's only so much that bmbm can do, and the results are not guaranteed to be isolated from garbage collection and other effects.

Because bmbm takes two passes through the tests, it can calculate the required label width.

 require 'benchmark'
 array = (1..1000000).map { rand }
 Benchmark.bmbm do |x|
 x.report("sort!") { array.dup.sort! }
 x.report("sort") { array.dup.sort }
 end

Generates:

 Rehearsal -----------------------------------------
 sort! 11.928000 0.010000 11.938000 ( 12.756000)
 sort 13.048000 0.020000 13.068000 ( 13.857000)
 ------------------------------- total: 25.006000sec
 user system total real
 sort! 12.959000 0.010000 12.969000 ( 13.793000)
 sort 12.007000 0.000000 12.007000 ( 12.791000)

bmbm yields a Benchmark::Job object and returns an array of Benchmark::Tms objects.




(追記) (追記ここまで)


Add Comment

JavaScript must be enabled for certain features to work
* Required information
1000

Comments

No comments yet. Be the first!
(追記) (追記ここまで)
(追記) (追記ここまで)

AltStyle によって変換されたページ (->オリジナル) /