我几乎不用reverse_each
方法,而是在我需要向后遍历数组时调用reverse.each
。所以我只是做了一些基准测试,显然reverse_each
明显快于reverse.each
。为什么Array.reverse_each比Array.reverse.each快
- 这是因为存在与在创建使用
reverse.each
时通过它迭代之前的反向阵列相关联的时间的元素?
然而在我的示例1000万次迭代TIME(reverse) + TIME(each) - TIME(reverse.each) ~ 1.2 seconds
为大小4的阵列,并且该时间差或多或少保持稳定而不管阵列的大小的(下文)。我已经测试了多达100个元素。
- 什么解释了这一秒差异?
require 'benchmark'
number = 10000000
arr = (1..4).to_a
Benchmark.bm(13) do |x|
x.report("reverse.each") { number.times { arr.reverse.each {|x| x} } }
x.report("reverse_each") { number.times { arr.reverse_each {|x| x} } }
x.report("reverse") { number.times { arr.reverse } }
x.report("each") { number.times { arr.each {|x| x} } }
end
相同a更快,更快:) +1 – apneadiving