我一直认为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)
在LUA中链接函数的性能会比先本地化然后调用下一个函数差
只有当您多次使用本地(缓存(值时,这才是真的。
我的简单基准不正确吗?
基准测试中的两个循环都被编译为(几乎(相同的Lua字节码,因此它们的性能必须相等。