为了账号安全,请及时绑定邮箱和手机立即绑定

lua 关于全局变量和局部变量的效率问题

lua 关于全局变量和局部变量的效率问题

达令说 2019-03-29 22:08:07
localsum=0fori=1,999999999dosum=sum+iendprint(sum)print(os.clock())sum=0fori=1,999999999dosum=sum+iendprint(sum)print(os.clock())结果是使用局部变量的耗时为15秒,全局变量50秒。请问为什么差那么多?另外,用C代码测试,得3秒。请问lua和C的效率差距在哪?
查看完整描述

2 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

在5.0之后,Lua用了一种类似于寄存器的虚拟机模式,Lua用栈来储存其寄存器。每一个活动的函数,Lua都会对其分配一个栈,这个栈用来储存函数里的活动记录。
lua的编译器将local变量存储至寄存器,对local变量的操作就相当于直接对寄存器进行操作,对global变量的操作要先获取变量,然后才能对其进一步操作,自然局部变量比全局变量快。。。
                            
查看完整回答
反对 回复 2019-03-29
  • 2 回答
  • 0 关注
  • 683 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信