TEST 1: Localize
Code:
local min = math.min
Results:
Non-local: 0.719 (158%)
Localized: 0.453 (100%)Conclusion:
Yes, we should localize all standard lua and Spring API functions.
来源:https://springrts.com/wiki/Lua_Performance
那个性能提升的原因是什么?
TEST 1: Localize
Code:
local min = math.min
Results:
Non-local: 0.719 (158%)
Localized: 0.453 (100%)Conclusion:
Yes, we should localize all standard lua and Spring API functions.
来源:https://springrts.com/wiki/Lua_Performance
那个性能提升的原因是什么?
本地变量 min = math.min
请记住,table.name
只是语法糖代替了 table["name"]
(它们完全等价)。而全局变量只是环境表中的键,所以 math.min
相当于 _ENV["math"]["min"]
。这是两个哈希表查找才能得到实际的函数值。
将值复制到 local
中可以将其放置在 VM 寄存器中,因此不需要查找。
math.min
表示双重查找表的哈希部分(在全局表中搜索math
,并在math
表中搜索min
),需要使用 CPU 密集型的哈希函数计算字符串math
和min
的哈希值。 - Egor Skriptunofflocal math = math
而不是local min = math.min
来测试您的时间。 - lhf