Всем привет! Обязательно ли обнулять локальные переменные внутри функции?
Пример:
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 сек на эту функцию и посмотри как растёт счётчик. А потом попробуй удалять и обнулять переменные - ощутимая разница, а сам счётчик говорит о "пороге вылета", то бишь чем больше показывает счётчик тем хуже, тем больше игра лагать начинает вплоть до вылета (искл. спавн постоянных юзабельных объектов). Он не точен, это ясное дело, но если что-то без конца утекает он даст знать, как в данном случае
0
14
3 года назад
0
rsfghd:
Юзай счётчик хэндлов для подобных исследований. Запусти таймер с периодичностью 0.10 сек на эту функцию и посмотри как растёт счётчик. А потом попробуй удалять и обнулять переменные - ощутимая разница, а сам счётчик говорит о "пороге вылета", то бишь чем больше показывает счётчик тем хуже, тем больше игра лагать начинает вплоть до вылета (искл. спавн постоянных юзабельных объектов). Он не точен, это ясное дело, но если что-то без конца утекает он даст знать, как в данном случае
посему же он не точен он помоему берет все объекты типа юнит, декор, эффек, предметы(не проверял), переменные, и помоему даже способности и это происходит при старте
Принятый ответ
0
27
3 года назад
0
Гуванч, тю, нашёл кого оспаривать)
Он может выдавать кривые значения и уйти вовсе в минус. На него полагаться порой глупо, но новички пусть юзают пока не продвинутся

Естественно некоторые казусы проходят на следующей пересборке, но лучше, как я сказал, не полагаться на него на все 100
0
8
3 года назад
0
Насколько я понимаю, игра точно считает количество созданных объектов. У меня даже табличка, выглядящая довольно правдоподобно, для 1.26 для cheat engine была.
Загруженные файлы
2
26
3 года назад
2
Nikolay36:
Bergi_Bear, lua небезопасен, вирусы много для lua
что за бред?
Чтобы оставить комментарий, пожалуйста, войдите на сайт.