当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby Benchmark.bmbm用法及代码示例


本文简要介绍ruby语言中 Benchmark.bmbm 的用法。

用法

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

有时基准测试结果会出现偏差,因为较早执行的代码遇到的垃圾收集开销与稍后运行的代码不同。 bmbm 尝试通过运行两次测试来最小化这种影响,第一次是为了让运行时环境稳定而进行预演,第二次是真正的。 GC.start 在每个实际计时开始之前执行;此费用不包括在时间安排中。但实际上, bmbm 能做的只有这么多,并且不能保证结果与垃圾收集和其他影响隔离。

因为 bmbm 需要两次通过测试,它可以计算出所需的标签宽度。

require 'benchmark'

array = (1..1000000).map { rand }

Benchmark.bmbm do |x|
  x.report("sort!") { array.dup.sort! }
  x.report("sort")  { array.dup.sort  }
end

生成:

Rehearsal -----------------------------------------
sort!   1.440000   0.010000   1.450000 (  1.446833)
sort    1.440000   0.000000   1.440000 (  1.448257)
-------------------------------- total: 2.890000sec

            user     system      total        real
sort!   1.460000   0.000000   1.460000 (  1.458065)
sort    1.450000   0.000000   1.450000 (  1.455963)

bmbm 产生一个 Benchmark::Job 对象并返回一个 Benchmark::Tms 对象数组。

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Benchmark.bmbm。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。