gpt4 book ai didi

Ruby 的变量交换 : x, y = y,x -- 数组引用似乎更慢?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:53:20 26 4
gpt4 key购买 nike

我只是在测试一些数组操作并做 ol'reverse-an-array 问题(在高层次上)看看 Ruby 的 x,y = y,x swap 和典型的 use-a- 之间的性能差异临时变量到交换方法:

# using Ruby's swap
z = arr.length-1
for x in 0..(z/2)
arr[x], arr[z - x] = arr[z - x], arr[x]
end

# using standard temp var
z = arr.length-1
for x in 0..(z/2)
temp = arr[x]
arr[x] = arr[z - x]
arr[z - x] = temp
end

Ruby 的快捷交换速度大约慢 40%。我猜已经完成了某种额外的数组引用?但我不知道在哪里可以完成额外的操作...我只是假设 Ruby 在幕后进行了临时变量交换。

编辑:这是我正在使用的基准:

def speed_test(n)
t = Time.now
n.times do
yield
end
Time.now - t
end

tn = speed_test(TIMES) do
# code...
end

数组就是:

arr = 10000.times.map

最佳答案

我猜问题出在您的基准测试上。可能第一个循环将所有内容都放入缓存中。然后第二个循环运行相同的代码,但它恰好更快,因为缓存是新鲜的。

作为对此的快速检查,尝试颠倒两个循环的顺序!

关于Ruby 的变量交换 : x, y = y,x -- 数组引用似乎更慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7635324/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com