我正在使用Rials 5.0.1。使用rails控制台,我想弄清楚在字符串中获取第一个正则表达式索引的最快方法是什么。所以我试过了下面的
2.4.0 :004 > Benchmark.bm do |x|
2.4.0 :005 > x.report { 50000.times { a = 'a@b.c'.index(/\@/) } }
2.4.0 :006?> x.report { 50000.times { a = 'a@b.c'.match(/\@/)[0] } }
2.4.0 :007?> end
user system total real
0.030000 0.000000 0.030000 ( 0.026763)
0.060000 0.000000 0.060000 ( 0.064986)
=> [#<Benchmark::Tms:0x007fe974e13f88 @label="", @real=0.026763000059872866, @cstime=0.0, @cutime=0.0, @stime=0.0, @utime=0.03000000000000025, @total=0.03000000000000025>, #<Benchmark::Tms:0x007fe973c9e9d8 @label="", @real=0.06498600030317903, @cstime=0.0, @cutime=0.0, @stime=0.0, @utime=0.06000000000000005, @total=0.06000000000000005>]
我对如何阅读结果感到困惑。我认为&#34;它告诉我第一种方法平均需要&#34; .02&#34;秒,而第二个需要&#34; .06&#34;秒,所以我应该坚持&#34;索引&#34;。我读得对吗?
答案 0 :(得分:1)
您可以使用总列。该时间不是平均值,而是该块执行的经过时间
答案 1 :(得分:0)
“真实”是最简单且(可能)相关的东西。时钟经过的时间很简单。 t = Time.now; do_things; real=Time.now-t
。
您可以忽略其他列。
您说的是“平均值”-这不是平均值,它是您编写代码50,000次所需的时间。因此,一次执行的平均时间为real/50_000
。 (但您无需计算该值即可知道索引更快)。