佚名通过本文主要向大家介绍了lua 全局变量,lua定义全局变量,lua 全局函数,lua局部变量,全局变量和局部变量等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:lua 关于全局变量和局部变量的效率问题
描述:
解决方案1:
描述:
local sum = 0
for i=1,999999999 do
sum = sum + i
end
print(sum)
print(os.clock())
sum = 0
for i=1,999999999 do
sum = sum + i
end
print(sum)
print(os.clock())
结果是使用局部变量的耗时为15秒,全局变量50秒。 请问为什么差那么多?
另外,用C代码测试,得3秒。 请问lua和C的效率差距在哪?
解决方案1:
在5.0之后,Lua用了一种类似于寄存器的虚拟机模式,Lua用栈来储存其寄存器。每一个活动的函数,Lua都会对其分配一个栈,这个栈用来储存函数里的活动记录。
lua的编译器将local变量存储至寄存器,对local变量的操作就相当于直接对寄存器进行操作,对global变量的操作要先获取变量,然后才能对其进一步操作,自然局部变量比全局变量快。。。
参见 http://lua-users.org/wiki/OptimisingUsingLocalVariables