gpt4 book ai didi

performance - 在循环内部或外部声明局部更好吗?

转载 作者:行者123 更新时间:2023-12-03 14:40:52 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





In Lua, should I define a variable every iteration of a loop or before the loop?

(1 个回答)


4年前关闭。




我习惯这样做:

do
local a
for i=1,1000000 do
a = <some expression>
<...> --do something with a
end
end

代替
for i=1,1000000 do
local a = <some expression>
<...> --do something with a
end

我的推理是创建一个局部变量 1000000 次比创建它一次并在每次迭代中重用它的效率低。

我的问题是:这是真的还是我遗漏了另一个技术细节?我问是因为我没有看到有人这样做,但不确定原因是因为优势太小还是因为实际上更糟。更好是指使用更少的内存并运行得更快。

最佳答案

像任何性能问题一样,先衡量。
在 unix 系统中,您可以使用时间:

time lua -e 'local a; for i=1,100000000 do a = i * 3 end'
time lua -e 'for i=1,100000000 do local a = i * 3 end'

输出:
 real   0m2.320s
user 0m2.315s
sys 0m0.004s

real 0m2.247s
user 0m2.246s
sys 0m0.000s

本地版本在 Lua 中似乎快了一小部分,因为它没有初始化 a为零。但是,这不是使用它的理由, 使用最局部的范围,因为它更具可读性 (这在所有语言中都是很好的风格:请参阅针对 C 提出的这个问题,
Java , 和 C# )

如果您正在重用一个表而不是在循环中创建它,那么可能会有更显着的性能差异。在任何情况下,只要有可能,衡量和支持可读性。

关于performance - 在循环内部或外部声明局部更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31083951/

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