Тест не совсем корректен. Под увеличением числа переменных я имел в виду:
Код
local a_1
local a_2
....
local a_n
и последующие обращение к ним.
Касательно областей памяти. Да, они лежат в разных областях памяти. Но именно в данном тесте это скорее всего не так. Что я имею в виду:
Код
Где лежит b ? Почему в разных, если область памяти пока только одна - глобальная.
А теперь такой вариант
Код
--lua
//global mem
a = 0
function f()
//local mem
local b = 0
return b
end
//global mem
local res = f()
Здесь, при вызове функции будет сформирована своя область памяти, изолированная от глобальное, и уже в ней будет лежать b.
Следовательно, локальная область памяти будет содержать только b, в то время как глобальная будет содержать a, res и еще кучу системных переменных которые задаются не явно. Что в итоге и скажется на производительности.
Собственно, кажется это и подтверждение моих соображений:
https://www.lua.org/pil/4.2.htmlКод
Означает что переменная глобальна для всего скрипта, но из других скриптов она не видна.