Добавлен
Использую след.конструкцию
globals
integer niju = XXXX
integer rokuju = XXXXXXX
endglobals
Function Lmao takes nothing returns nothing
	local integer i
	
	loop 
	exitwhen i == niju
		...
		i++
	endloop
	
	set i = 0
	
	loop 
	exitwhen i == rokuju
		...
		i++
	endloop
Вызывает лаги, т.к. я использую локалку i дважды для обоих циклов, а вот если я использую другую локалку, нууу, объявляю и использую ее для второго цикла, то уже не лагает. Как сделать так, чтобы не лагали циклы при использовании одной локалки для них всех.

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

LainMikoroso, описаное в вопросе невозможно технически по ряду причин. Более того, каждая новая локальная переменная только увеличивает количество выполняемых процессором команд, что определённо не может увеличивать производительность функции по определению.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
7 лет назад
0
Похожие вопросы:

ответ
TAHK90:
убери действие for integer B
заведи себе переменную типа integer с именем count
далее выбираешь всех юнитов в группе
с каждым действием count увеличивай на 1
делаешь нужные действия если count меньше 2
если равен или больше - устаналивай на 0 и очищай группу
ответ
в гуи есть триггер-добавить событие
в триггере с событием инициализация 
если триггерная область == null (нету области)
	пробегаем циклом по массиву областей
	триггер - добавить событие этому триггеру (Юнит входит в область (Rect[А]))
иначе
	делаем то что надо делать при входе в 1 из 50 областей
иначе никак
ответ
~16GB:
ты что делаешь новые функции для гуи? если да, то нафига?
ответ
Custom script: exitwhen true
ответ
Лимит операций примерно 4 к. А у тебя тут поболее 16к.
Обойти лимит операций можно только разнеся действия в разные потоки. К примеру для через таймер.

16
26
7 лет назад
16
вы втираете какую то дичь
0
15
7 лет назад
Отредактирован EnergyFrost
0
Дичь или кривые условия в циклах. Ну типа niju или rokuju - отрицательные или очень-очень большие. И я не знаю, как и что там с инициализацией по-умолчанию локалки. (проверять самому лень). Но вообще, по сути должно инициализироваться автоматом нолем
0
14
7 лет назад
0
EnergyFrost:
Дичь или кривые условия в циклах. Ну типа niju или rokuju - отрицательные или очень-очень большие. И я не знаю, как и что там с инициализацией по-умолчанию локалки. (проверять самому лень). Но вообще, по сути должно инициализироваться автоматом нолем
А, лол я забыл дописать, я локалку инициализирую нулем, а глобалки устанавливаются в другом триггере
0
15
7 лет назад
0
LainMikoroso, в первый цикл допиши BJDebugMsg(I2S(niju)), во второй BJDebugMsg(I2S(rokuju )). Вот тебе счастье. Если все нормально выполняется и выходит, значит проблема не в этом куске
0
14
7 лет назад
0
в первый цикл допиши BJDebugMsg(I2S(niju)), во второй BJDebugMsg(I2S(rokuju )). Вот тебе счастье. Если все нормально выполняется и выходит, значит проблема не в этом куске
(Если я использую другую локалку то все работает)
0
15
7 лет назад
0
LainMikoroso, да, точно дичь втираешь. Какие значения у тебя принимают переменные условия цикла?
0
14
7 лет назад
0
да, точно дичь втираешь. Какие значения у тебя принимают переменные условия цикла?
Положительные от 0 и до 10(не более, тестил с 0-2)
0
15
7 лет назад
0
Короче. Вот тебе- проблема не с локалкой, а с условиями (ну если, конечно, пробелма в этих местах). Узнай какое из условий зацикливается и не выходит, и будет тебе счастье
0
14
7 лет назад
0
EnergyFrost:
Короче. Вот тебе- проблема не с локалкой, а с условиями (ну если, конечно, пробелма в этих местах). Узнай какое из условий зацикливается и не выходит, и будет тебе счастье
(Поменял переменную все заработало)
Тебе еще раз повторить?
0
15
7 лет назад
Отредактирован EnergyFrost
0
LainMikoroso, да, пожалуйста. 3 раза. Отладку давай лучше, чем упираться
0
32
7 лет назад
0
LainMikoroso, вот кто так делает?
У вас цикл вовсе не должен запустится, ибо переменная не инициализрованна:
local integer i // необходимо заменить local integer i = 0
Потом есть лимит операций, нужно осторожнее с циклами в которых 100500 итераций.
Просадку фпс вызывает кривой код, предоставьте весь код а не этот пример...
0
14
7 лет назад
0
quq_CCCP:
LainMikoroso, вот кто так делает?
У вас цикл вовсе не должен запустится, ибо переменная не инициализрованна:
local integer i // необходимо заменить local integer i = 0
Потом есть лимит операций, нужно осторожнее с циклами в которых 100500 итераций.
Просадку фпс вызывает кривой код, предоставьте весь код а не этот пример...
Читай ниже, плез, там я отписал что инициализирую, но забыл написать ее в коде.
Весь код в мейн записи.
0
32
7 лет назад
0
LainMikoroso, ничего лаги не вызывает... Это ваша фантазия...
0
15
7 лет назад
0
LainMikoroso, вам 3 мапмейкера говорят одно и то же. Может быть, и правда она- дичь?
2
14
7 лет назад
2
вам 3 мапмейкера говорят одно и то же. Может быть, и правда она- дичь?
Не
0
29
7 лет назад
0
LainMikoroso,
сделай тестовую карту с этими, и чтобы там были лаги. Тогда мы тебе поверим.
2
30
7 лет назад
Отредактирован Clamp
2
LainMikoroso, описаное в вопросе невозможно технически по ряду причин. Более того, каждая новая локальная переменная только увеличивает количество выполняемых процессором команд, что определённо не может увеличивать производительность функции по определению.
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.