Насколько константная функция быстрее обычной, если быстрее вообще?

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

ScopteRectuS, Скорее его там нет, это просто свойство интерпретатора, как и тип nothing, который объявить нельзя, так вероятно и constant - просто дает понять интерпретатору что эту переменную вынести в отдельное место, так же проверить код- нет ли операции присвоение этой переменной.
Если есть - выдать ошибку. Обращение к переменной медленнее обращение к конкретному значению, указанному в месте использования.
call CreateUnit( pl, 'hpea', x, y, bj_unitFacing) медленнее call CreateUnit( pl, 'hpea', x, y, 270.00 ).
Потому что движок сначала ищет переменную, потом берет из нее значение, иначе сразу вводит значение.
т.к есть макросы, дефайны, всякие фитчи тулов векса по замене констант, это все нафиг никому не упало. Софт все сделает за вас.

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
19
7 лет назад
0
Похожие вопросы:

ответ
нет, конвертации напрямую нет. я что-то слышал в прошлом про баг с сохранением fogmodifier в хештаблицу, но деталей не знаю, можешь проверить то направление.
ну и мемхак, на крайняк, офк.
ответ
Ой извини, уже нашел ошибку
if GetUnitAbilityLevel(WhistlePhysical_CASTER[i], c_WhistlePhysical_Buff_ID) == 0 then вот что было такой переменный оказалось в другой способности
ответ
Sergey105, нет его 1раз запускают если они с нуля а так растет каждый атак +1 потом таймер удаляет его, причиной было это
constant real time_Interval = 1/32 тут почему то трабл таймер в мега скорость идет,
поэтому поставил constant real time_Interval = 0.03 и стало норм
ответ
ScopteRectuS, у тебя где то перезаписывается bj_lastCreatedUnit
причём происходит это после первой итерации GroupEnumUnitsInRange
а вообще не стоит юзать стандартные бж переменные
т.к. они могут конфликтовать с другими системами
используй приватные переменные
если после перехода на приватные глобалки проблема останется то скопируй систему на отдельную карту и кинь эту карту сюда
буду тестить разные варианты
ответ
ScopteRectuS, ну как я и догадывался, что идет рекурсия.
10 событий - юнит получает урон, на одного юнита... Нужны именно такого типа проверки, всегда в условии триггера проверяй от кого урон и какой этот урон с помощью флага глобалки как в примере.В блоге лича хорошо описаны костыли доты, почитай для общего развития чтобы не наступать на эти грабли еще раз.

2
29
7 лет назад
2
Константнтая функция - синтаксический сахар в джассе, но из-за своих ограничений совсем незначительно быстрее обычной функции, но медленнее доступа к константной переменной.
4
16
7 лет назад
4
да едва ли это имеет вообще значение
2
26
7 лет назад
2
вас должно заботить не то, быстрее ли такая функция или медленнее, а оптимизация узких мест, вот где важна скорость выполнения. не в ту сторону смотрите
DracoL1ch:
да едва ли это имеет вообще значение
0
21
7 лет назад
Отредактирован scopterectus
0
Hate:
вас должно заботить не то, быстрее ли такая функция или медленнее, а оптимизация узких мест, вот где важна скорость выполнения. не в ту сторону смотрите
Я про это и думал. Ведь можно сделать функцию константной, которая вызывается таймером с малым периодом.
code
	function IsUnitAlive takes unit whichUnit returns boolean
		return not ( IsUnitType( whichUnit, UNIT_TYPE_DEAD ) or ( GetUnitTypeId( whichUnit ) == 0 ) )
	endfunction
	
	function TimerCallback takes nothing returns nothing
	  	...
		if ( IsUnitAlive( unit ) ) then
			...
		endif
		...
	endfunction

	function Start takes nothing returns nothing
		call TimerStart( CreateTimer( ), 0.03125, true, function TimerCallback )
	endfunction 
Вот что я имел ввиду.
0
23
7 лет назад
0
а не проше булевой ставить при инизиалицазии а потом уже его проверять
2
16
7 лет назад
2
а ты пробовал? логика говорит, что constant функция всегда возвращает константу и не может работать с параметрами :)
2
20
7 лет назад
2
Ускорение достигается за счет расположения функции выше по коду, чем остальные, ЕМНИП
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.