LUA:函数嵌套调用的性能效率问题

我一直认为LUA(版本5.1)中的函数嵌套调用的性能要低于先将其本地化再调用下一个函数。

我是错了还是我简单的基准测试是有误的?

local clock = os.clock
local plugin = {}

function plugin:Test()
    return { SubTest = function() return "hello" end }
end

collectgarbage(); collectgarbage()
local start = clock()
for i=1, 1000000 do
    plugin:Test():SubTest()
end
print(clock() - start, collectgarbage("count") / 1024)

collectgarbage(); collectgarbage()
local start = clock()
for i=1, 1000000 do
    local module = plugin:Test()
    module:SubTest()
end
print(clock() - start, collectgarbage("count") / 1024)

原文链接 https://stackoverflow.com/questions/70238450

点赞
stackoverflow用户1847592
stackoverflow用户1847592

在 LUA 中链式函数的性能表现不如先将其本地化,然后调用下一个函数。

这只有在多次使用本地(缓存)值时才成立。

我的简单基准测试有误吗?

您基准测试中的两个循环都编译为(几乎)相同的 Lua 字节码,因此它们的性能必须相等。

2021-12-06 00:57:00