當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Ruby Benchmark.benchmark用法及代碼示例

本文簡要介紹ruby語言中 Benchmark.benchmark 的用法。

用法

benchmark(caption = "", label_width = nil, format = nil, *labels) { |report| ... }

使用 Benchmark::Report 對象調用塊,該對象可用於收集和報告單個基準測試的結果。為每行上的標簽保留label_width 前導空格。在報告頂部打印caption,並使用format 格式化每一行。 (注意:caption 必須包含終止換行符,請參閱默認的 Benchmark::Tms::CAPTION 示例。)

返回 Benchmark::Tms 對象的數組。

如果塊返回 Benchmark::Tms 對象的數組,這些將用於格式化額外的輸出行。如果給定labels 參數,這些參數用於標記這些額外的行。

Note :其他方法為此提供了一個更簡單的接口,並且適用於幾乎所有的基準測試要求。請參閱 Benchmark 中的示例,以及 bm bmbm 方法。

例子:

require 'benchmark'
include Benchmark          # we need the CAPTION and FORMAT constants

n = 5000000
Benchmark.benchmark(CAPTION, 7, FORMAT, ">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.970000   0.000000   0.970000 (  0.970493)
times:    0.990000   0.000000   0.990000 (  0.989542)
upto:     0.970000   0.000000   0.970000 (  0.972854)
>total:   2.930000   0.000000   2.930000 (  2.932889)
>avg:     0.976667   0.000000   0.976667 (  0.977630)

相關用法


注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 Benchmark.benchmark。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。