开发者社区> 问答> 正文

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

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的效率差距在哪?

展开
收起
a123456678 2016-06-06 18:12:47 3194 0
1 条回答
写回答
取消 提交回答
  • 在5.0之后,Lua用了一种类似于寄存器的虚拟机模式,Lua用栈来储存其寄存器。每一个活动的函数,Lua都会对其分配一个栈,这个栈用来储存函数里的活动记录。
    lua的编译器将local变量存储至寄存器,对local变量的操作就相当于直接对寄存器进行操作,对global变量的操作要先获取变量,然后才能对其进一步操作,自然局部变量比全局变量快。。。

    2019-07-17 19:29:12
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载