Цитата(Cockney @ 11.6.2020, 16:10)
Тест не совсем корректен.
Не совсем корректен относительно чего?
Тест проводился для проверки фразы:
Цитата(cirus @ 11.6.2020, 13:36)
Если уж речь идет о скорости, то не используйте глобальные переменные, доступ к локальным быстрее.
Мы замерили 300 раз по 20млн обращений к локальной, и столько же к глобальной. Эксперимент выявил, что ситуация обратная, так что тест считаю корректным. Отмечу, что таким высказыванием забит весь интернет, так что здесь вопросы не к cirus, а к тому, кто это придумал))
Цитата(Cockney @ 11.6.2020, 16:10)
Код
Где лежит b ? Почему в разных, если область памяти пока только одна - глобальная.
Нет, здесь уже две области памяти. Следует отличать область памяти, и область видимости. Область памяти - полка в шкафу. Область видимости - разрешение заглянуть на ту или иную полку. В этом коде
a и
b лежат на разных полках, но дальше по коду любой будет иметь право лазить хоть на одну, хоть на другую. А теперь вопрос: стоит ли тогда просить систему строить две полки, если у всех доступ будет к обоим? Посмотрим, как это выглядит в коде:
Код
--lua
a = 5
local b = 7
log(_G.a) -- 5
log(_G.b) -- nil
Глобальные переменные хранятся в таблице
_G. Как мы видим, переменная
b, хоть и находится в той же области видимости, но в таблице
_G ее нет. Где же она? Где-то в недрах памяти lua. Без специальных библиотек посмотреть где они лежат - невозможно, но суть в том, что не в
_G. В итоге, кроме того, что мы заставили систему зачем-то строить отдельную полку для хранения
b, мы ничего не добились написав перед ней local.