【发布时间】:2016-04-18 13:17:26
【问题描述】:
设置一个临时变量来交换数组中的两个元素似乎比使用并行赋值更有效。谁能帮忙解释一下?
require "benchmark"
Benchmark.bm do |b|
b.report do
40000000.times { array[1], array[2] = array[2], array[1] }
end
end
Benchmark.bm do |b|
b.report do
40000000.times do
t = array[1]
array[1] = array[2]
array[2] = t
end
end
end
结果:
user system total real
4.470000 0.020000 4.490000 ( 4.510368)
user system total real
3.220000 0.010000 3.230000 ( 3.255109)
【问题讨论】:
-
Erik Michaels-Ober 在他的演讲中提到它快 40%,但没有提到原因 - youtu.be/fGFM_UrSp70?t=30m11s
标签: arrays ruby performance swap