当前位置: 代码迷 >> 综合 >> Ruby Benchmark 模块提供了测量和报告Ruby代码运行使用时间的方法。
  详细解决方案

Ruby Benchmark 模块提供了测量和报告Ruby代码运行使用时间的方法。

热度:93   发布时间:2024-01-21 01:22:45.0

 

Ruby Benchmark


 

ruby 默认带的 Benchmark模块提供了测量和报告Ruby代码运行使用时间的方法。


1、用给定的表达式"a"*1_000_000构造字符串来测量时间:

 

 

 

 

在我们的机器上 (FreeBSD 3.2 on P5, 100MHz) 生成的结果:

1.166667 0.050000 1.216667 ( 0.571355)

 

这个报告显示我们的CPU时间,系统CPU时间,用户和系统CPU时间总数,和流逝的真正时间。时间单元是秒。


2、使用bm方法进行同样的实验:

 

结果是:

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)

 

 

3、继续前面的例子,在每行报告前放个标签:

 

结果是:

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)

 

 

4、一些时间的花费依赖于它执行的次数。这些差别是由内存分配和垃圾回收的花费产生的。要避              免这些差异,提供了bmbm方法。例如,排序一个浮点数组的比较方式:

 

结果是:

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)

 

 

5、用唯一标签的连续试验的统计报告,使用benchmark方法:

 

结果是:

user system total real

 

for: 1.016667 0.016667 1.033333 ( 0.485749)

 

times: 1.450000 0.016667 1.466667 ( 0.681367)

 

upto: 1.533333 0.000000 1.533333 ( 0.722166)

 

>total: 4.000000 0.033333 4.033333 ( 1.889282)

 

>avg: 1.333333 0.011111 1.344444 ( 0.629761)

 

 

 

 

 

Ruby 內提供 Benchmark 讓你可以測量程式執行花費時間
  1. Benchmark.realtime
    
    require 'benchmark' COUNT = 500_000 puts "Benchmark.realtime" puts Benchmark.realtime { 1.upto(COUNT) do a = "1"; end } 
  2. Benchmark.measure
    
    require 'benchmark' COUNT = 500_000 puts Benchmark.measure { 1.upto(COUNT) do a = "1"; end } 


原文: http://my4java.itpub.net/post/9983/66956