我几乎不使用reverse_each
方法,而是在reverse.each
需要向后遍历数组时调用。所以我只是做了一些基准测试,显然reverse_each
比reverse.each
.
- 这是因为在使用时在迭代它之前创建一个反向数组有一个时间元素
reverse.each
吗?
然而,在我的示例(如下)中,大小为 4 的数组进行了 1000 万次迭代TIME(reverse) + TIME(each) - TIME(reverse.each) ~ 1.2 seconds
。无论数组的大小如何,这个时间差或多或少都保持稳定。我已经测试了多达 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