本文简要介绍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 Benchmark.bm用法及代码示例
- Ruby Benchmark.benchmark用法及代码示例
- Ruby Benchmark.measure用法及代码示例
- Ruby Benchmark模块用法及代码示例
- Ruby BigMath.cos用法及代码示例
- Ruby Binding.local_variable_defined?用法及代码示例
- Ruby BigDecimal.self >用法及代码示例
- Ruby BigMath.sin用法及代码示例
- Ruby BasicSocket.send用法及代码示例
- Ruby BigDecimal.self >=用法及代码示例
- Ruby Base64.encode64用法及代码示例
- Ruby Bundler.setup用法及代码示例
- Ruby BigDecimal.floor用法及代码示例
- Ruby BigDecimal.to_s用法及代码示例
- Ruby BigDecimal.to_d用法及代码示例
- Ruby BigDecimal.save_rounding_mode用法及代码示例
- Ruby BigDecimal modulo用法及代码示例
- Ruby BigDecimal infinite?用法及代码示例
- Ruby BigDecimal.to_digits用法及代码示例
- Ruby BigDecimal.add用法及代码示例
- Ruby BasicObject.equal?用法及代码示例
- Ruby Buffer.slice用法及代码示例
- Ruby BigDecimal.save_exception_mode用法及代码示例
- Ruby BasicSocket.remote_address用法及代码示例
- Ruby BigDecimal to_f()用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Benchmark.bmbm。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。