Benchmark计算ruby代码执行时间

Bianca ·
更新时间:2024-11-10
· 755 次阅读

  自动化脚本的执行时间是衡量脚本效率的一个重要手段,脚本的执行速度不能太慢,否则在脚本多的情况下会严重影响执行的总体时间。那么,在写脚本过程中,当有多种方法都可以达到同样效果时,需要选择执行时间比较短的方法。

  那么如何来计算脚本代码执行的时间呢?在ruby中,自带的 Benchmark模块提供了测量和报告Ruby代码运行使用时间的方法。测试脚本如下:

require 'benchmark'   Benchmark.bmbm(10) do |t|   t.report{ruby代码1}   t.report{ruby代码2}   t.report{ruby代码3} end

  bmbm是Benchmark的测试方法,这是双重测试,用来提高精确度。里面的参数10用来调节标签在结果里的显示占位宽度,不对结果产生影响。t是传递给bmbm的block,是个report对象。

  测试结果为

Rehearsal ---------------------------------------------             1.781000   0.016000   1.797000 (  1.953000)             2.297000   0.062000   2.359000 (  2.359000)             1.688000   0.016000   1.704000 (  1.719000) ------------------------------------ total: 5.860000sec                   user     system      total        real             1.750000   0.000000   1.750000 (  1.875000)             2.172000   0.015000   2.187000 (  2.297000)             1.469000   0.016000   1.485000 (  1.703000)

  因为使用了bmbm方式,所以会有两个结果。第一个是演习结果,第二个是真实结果。其中括号中是实际流逝的时间,一般是我们需要比较的时间,单位是秒。

  知道ruby代码执行的时间可以选择效率更高的方法,还可以精确计算一行代码执行需要多少时间。在实际的脚本中,可以在脚本中间增加Benchmark方法,一般是在脚本调试阶段,在具体的脚本执行中应该注释掉,如下面是测试通过ruby代码生成xml的时间。

  通过计算相关代码执行的时间,可以查到脚本执行效率的瓶颈,从而找到解决的办法。



Ruby

需要 登录 后方可回复, 如果你还没有账号请 注册新账号