gpt4 book ai didi

lua - Lua功能的性能和优化

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

因为我们中间有一些编程向导,所以我想问你们答案,而不是猜测。

我一生中做了很多优化,并且在大多数情况下,这种优化水平是完全不必要的。

但是,我不确定为什么方法1(见下文)比方法2(见下文)快2到2.5倍。我本来希望如此,因为方法2的函数X包含函数Y,所以如果它不比方法1快,那么它至少要快于方法1,因为两个函数是分开的。

方法1的速度明显快于方法2的原因是什么?是某种编译器优化吗?

-- METHOD 1: 

local function Y()
return true
end

local function X()
Y()
return true
end

local getTimer = system.getTimer
local startTime = getTimer()
local iterations = 1000000

for i = 1, iterations do
X()
end

print( "TIME:"..(getTimer()-startTime) )
-- METHOD 2:

local function X()

local function Y()
return true
end

Y()

return true
end

local getTimer = system.getTimer
local startTime = getTimer()
local iterations = 1000000

for i = 1, iterations do
X()
end

print( "TIME:"..(getTimer()-startTime) )

最佳答案

函数是Lua中的实际对象。您要从原型(prototype)中实例化此类对象,并将其放入名为Y的变量中。这样做会产生一些开销:分配,挂接调试信息,关闭所有升值等等。有关一些相关位,请参见here

在#2中,您每次都会执行此操作。同样,在X的末尾,Y超出了范围,而没有其他任何引用,因此变成了垃圾,在某个时候为集合做出了贡献。

关于lua - Lua功能的性能和优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60797360/

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