Всем привет! Обязательно ли обнулять локальные переменные внутри функции?
Пример:
function Kolyan takes nothing returns nothing
local unit u = GetTriggerUnit()
local group g = CreateGroup()
local effect e
Любые действия
set e = null
set g = null
set u = null
endfunction
и второй пример без обнуления:
function Kolyan takes nothing returns nothing
local unit u = GetTriggerUnit()
local group g = CreateGroup()
local effect e
Любые действия
Без обнуления
endfunction

Принятый ответ

rsfghd:
Юзай счётчик хэндлов для подобных исследований. Запусти таймер с периодичностью 0.10 сек на эту функцию и посмотри как растёт счётчик. А потом попробуй удалять и обнулять переменные - ощутимая разница, а сам счётчик говорит о "пороге вылета", то бишь чем больше показывает счётчик тем хуже, тем больше игра лагать начинает вплоть до вылета (искл. спавн постоянных юзабельных объектов). Он не точен, это ясное дело, но если что-то без конца утекает он даст знать, как в данном случае
посему же он не точен он помоему берет все объекты типа юнит, декор, эффек, предметы(не проверял), переменные, и помоему даже способности и это происходит при старте
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
2
32
3 года назад
2
Ага, так же будет не лишним группу удалить или юзать глобалку или вовсе ресайкл груп.
0
32
3 года назад
Отредактирован Берги
0
Переходите на луа и ничего не надо обнулять, а группа да, одной глобальной хватит на всю игру может ещё +1 для исключительных ситуаций двойного перебора
0
4
3 года назад
0
Если код выполняется за всю игру несколько раз - нет, необязательно, твое время важнее чем пара сэкономленных килобайтов. Если этот код выполняется тысячи раз то изволь обнулить. Если код должен выполнятся быстро, например в низкопериодическом таймере или ботлнеке, то используй глобальные переменные чтобы не тратить время на выделение памяти.
0
8
3 года назад
Отредактирован goodlyhero
0
то используй глобальные переменные чтобы не тратить время на выделение памяти.
Главное при использовании глобалок в ногу себе не выстрелить. Они могут быть перезаписаны в коллбеке триггера, вызванного тем или иным действием в коде. Поэтому желательно, как минимум, использовать разные глобалки в разных системах.
0
2
3 года назад
0
Bergi_Bear, lua небезопасен, вирусы много для lua
0
27
3 года назад
Отредактирован rsfghd
0
Юзай счётчик хэндлов для подобных исследований. Запусти таймер с периодичностью 0.10 сек на эту функцию и посмотри как растёт счётчик. А потом попробуй удалять и обнулять переменные - ощутимая разница, а сам счётчик говорит о "пороге вылета", то бишь чем больше показывает счётчик тем хуже, тем больше игра лагать начинает вплоть до вылета (искл. спавн постоянных юзабельных объектов). Он не точен, это ясное дело, но если что-то без конца утекает он даст знать, как в данном случае
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.