gpt4 book ai didi

performance - 为什么 Lua 循环很慢?

转载 作者:行者123 更新时间:2023-12-02 06:31:07 24 4
gpt4 key购买 nike

据说 Lua 是一种快速的脚本语言。但是当我测试循环时,例如:

a = 0
while a < 1000000000 do
a = a + 1
end

这会花费很多时间(超过 1 分钟)。是不是因为Lua需要复制粘贴loop的内容,然后求值?

我知道在评估时你需要从堆栈中弹出()项目。

我也在 Ruby 上测试了这个“速度测试”,它在大约 20 秒内完成了循环。

编辑:为什么这在局部变量上要快得多? (大约 16 秒进行相同的迭代,但在函数内部的局部变量上)

最佳答案

试试下面的代码。它比较了 while 与 for 循环以及全局变量与局部变量。

我得到这些数字(在 Lua 5.1.4 中,但在 5.3.2 中它们是相似的),它们告诉你在循环中使用全局变量的成本:

WG  9.16    100
WL 1.96 467
FG 4.93 186
FL 1.18 776

当然,如果您在循环内进行实际工作,这些成本就会被摊薄。

代码如下:

local N=1e8

t0=os.clock()
a = 0
while a < N do
a = a + 1
end
t1=os.clock()-t0
print("WG",t1,math.floor(t1/t1*100+0.5))

t0=os.clock()
local a = 0
while a < N do
a = a + 1
end
t2=os.clock()-t0
print("WL",t2,math.floor(t1/t2*100+0.5))

t0=os.clock()
b = 0
for i=1,N do
b = b + 1
end
t3=os.clock()-t0
print("FG",t3,math.floor(t1/t3*100+0.5))

t0=os.clock()
local b = 0
for i=1,N do
b = b + 1
end
t4=os.clock()-t0
print("FL",t4,math.floor(t1/t4*100+0.5))

关于performance - 为什么 Lua 循环很慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36935769/

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