为什么在Lua中本地化函数会更快?

测试一:本地化

代码:

local min = math.min

结果:

非本地化:0.719 (158%)

本地化:0.453 (100%)

结论:

是的,我们应该本地化所有标准的 Lua 和 Spring API 函数。

这个性能提升的原因是什么?

点赞
用户501459
用户501459

local min = math.min

请记住,table.name 只是 table["name"] 的语法糖(它们完全等价)。而全局变量只是环境表中的键,所以 math.min 实际上是 _ENV["math"]["min"]。这需要两次散列表查找才能获取实际函数值。

将值复制到 local 中将其放置在 VM 寄存器中,因此不需要查找。

2015-10-05 16:00:18