使用局部变量优化 |
|
"局部变量非常快,因为它们驻留在虚拟机寄存器中,并且通过索引直接访问。另一方面,全局变量驻留在 lua 表中,因此通过哈希查找访问。" -- 托马斯·杰斐逊
x = { a=1,b=2 } function foo() local y=x print( x.a ) print( y.b ) -- faster than the print above since y is a local table end
(史蒂夫·德科特) 我刚开始尝试使用它,效果很好。例如,这段代码
local i, v = next(t, nil) while i do i, v = next(t, i) end
local next = next local i, v = next(t, nil) while i do i, v = next(t, i) end
for i, v in t do end -- about 5x as fast as a while
请记住,史蒂夫在他的测试中测量的是循环开销(循环体为空)。实际上,循环体中有一些语句,因此开销并不那么显著。-- 约翰·贝尔蒙特