【问题标题】:Why are localized functions faster in Lua?为什么 Lua 中的本地化函数更快?
【发布时间】:2016-01-01 21:35:07
【问题描述】:

测试 1:本地化

代码:

local min = math.min

结果:

非本地:0.719 (158%)
本地化:0.453 (100%)

结论:

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

来源:https://springrts.com/wiki/Lua_Performance

 

性能提升的原因是什么?

【问题讨论】:

  • 访问局部变量只是从某个堆栈位置读取一个值。相反,math.min 意味着使用 CPU 密集型计算字符串的哈希函数值 mathmin
  • local math = math代替local min = math.min试试你的时间安排。
  • 这与函数无关,即被访问的值的类型。它只与被评估以获得值的表达式的复杂性有关。

标签: performance lua


【解决方案1】:

局部最小值 = math.min

请记住,table.name 只是table["name"] 的语法糖(它们完全相同)。而全局变量只是环境表中的键,所以math.min_ENV["math"]["min"]。这是获取实际函数值的两个哈希表查找。

将值复制到 local 中会将其放入 VM 寄存器中,因此无需查找。

【讨论】:

    猜你喜欢
    • 2012-03-01
    • 1970-01-01
    • 2012-06-07
    • 2016-08-17
    • 2013-05-29
    • 2010-11-18
    • 2018-07-29
    • 2014-05-19
    相关资源
    最近更新 更多