Вопрос по оптимизации: есть ли смысл, например, держать локального игрока в переменной? Как бы да - не надо всё время обращаться к функции, но и из переменной информация достаётся какое-то время.

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

он не кэширован, вообще ни одна функция jass в игре не кэширует инфу и каждый раз производит все необходимые рассчеты с нуля. Поэтому выгоднее иметь массив Players[0..MaxPlayers] вместо вызова Player(0..maxPlayer) , LocalPlayer в main вместо GetLocalPlayer() , и т.д. Переменные быстрее, чем вызов функции.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
26
4 года назад
0
технически - да
0
32
4 года назад
0
Если в коде больше 1 раза, то да
0
17
4 года назад
0
Оптимизируются, в первую очередь, вычисления.
Вызов функции - последнее о чем стоит думать.
0
4
4 года назад
0
GetLocalPlayer:
Оптимизируются, в первую очередь, вычисления.
Вызов функции - последнее о чем стоит думать.
Я понимаю, что это крайности, просто поймал себя на мысли, что много где обращаюсь к этой функции, если можно внести изменения как можно раньше, то почему бы и нет.
0
32
4 года назад
0
локал плеер самое малое из зол.
На мемхаке завезли способ проверки на сколько тяжелый вызов той или иной функции, большинство нормальных нативок очень быстрые, но к примеру SteUnitPosition - очень тяжелая, вычисления как раз одни из самых быстрых, как и математические функции типа Sin, Cos.
Так что можите проводить собственные тесты.
2
17
4 года назад
2
SetUnitPosition - очень тяжелая
Чисто логически оно так и должно быть, поскольку функция устанавливает координаты учитывая карту путей. Там и должно быть прилично проверок.
0
23
4 года назад
0
а вы не думали что GetLocalPlayer закеширован? То есть
function GetLocalPlayer()
return localPlayer
end
Само собой функция не генерируется а лишь возврашает переменную из движка который запомнил у каждый игроков при живых

и автор собирается еше добавить его переменную трата на ресурсы

некоторые функции возврашает статичный значит закеширован который не выполняет сложную вычеслении
0
17
4 года назад
0
а вы не думали что GetLocalPlayer закеширован?
Слишком глубоко, чтобы думать об этом пользователю скриптового языка.
3
16
4 года назад
3
он не кэширован, вообще ни одна функция jass в игре не кэширует инфу и каждый раз производит все необходимые рассчеты с нуля. Поэтому выгоднее иметь массив Players[0..MaxPlayers] вместо вызова Player(0..maxPlayer) , LocalPlayer в main вместо GetLocalPlayer() , и т.д. Переменные быстрее, чем вызов функции.
Принятый ответ
0
23
4 года назад
0
DracoL1ch, а уже тестил ну норм!
Чтобы оставить комментарий, пожалуйста, войдите на сайт.