自动化脚本的执行时间是衡量脚本效率的一个重要手段,脚本的执行速度不能太慢,否则在脚本多的情况下会严重影响执行的总体时间。那么,在写脚本过程中,当有多种方法都可以达到同样效果时,需要选择执行时间比较短的方法。
那么如何来计算脚本代码执行的时间呢?在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的时间。
通过计算相关代码执行的时间,可以查到脚本执行效率的瓶颈,从而找到解决的办法。