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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
16
байткод констант и не-констант функции одианковый, никакой разницы там нет
на скринах i.imgur.com/ZORNLGH.png соответственно
32
ScopteRectuS, Скорее его там нет, это просто свойство интерпретатора, как и тип nothing, который объявить нельзя, так вероятно и constant - просто дает понять интерпретатору что эту переменную вынести в отдельное место, так же проверить код- нет ли операции присвоение этой переменной.
Если есть - выдать ошибку. Обращение к переменной медленнее обращение к конкретному значению, указанному в месте использования.
call CreateUnit( pl, 'hpea', x, y, bj_unitFacing) медленнее call CreateUnit( pl, 'hpea', x, y, 270.00 ).
Потому что движок сначала ищет переменную, потом берет из нее значение, иначе сразу вводит значение.
т.к есть макросы, дефайны, всякие фитчи тулов векса по замене констант, это все нафиг никому не упало. Софт все сделает за вас.
Принятый ответ
26
почему это работает?
Потому что сумма 1 и 2 всегда 3. Константно.
А юнит может оказаться как живым, так и не живым.
Поэтому функция суммирования может быть константной, а твоя проверка - нет.
Кламп все верно говорит. И по ссылке драколича это все размусолено.
21
А юнит может оказаться как живым, так и не живым.
почему тогда функция IsUnitAlive( ) работает исправно:
сonstant function IsUnitAlive takes unit whichUnit returns boolean
	return not ( IsUnitType( whichUnit, UNIT_TYPE_DEAD ) or ( GetUnitTypeId( whichUnit ) == 0 ) )
endfunction
26
ScopteRectuS, ты тестил на одном и том же юните, когда он жив и когда мертв?
16
да не влияет содержимое, алло, уже показали же. просто сама конструкция constant ничего не делает.
22
когда вы уже забудете о скорости, тут зависит отработки машин от процессора потоки, даже 1 байт может грохнуть машину... думай об оптимизации а не от функции
разница времени 0.0001 сек вы так жалуете?
26
DracoL1ch, зачем тогда она нужна?
И к чему тогда пояснения ее функционала по твоей ссылке?
26
avuremybe:
DracoL1ch, зачем тогда она нужна?
И к чему тогда пояснения ее функционала по твоей ссылке?
после появления jngp не нужна совершенно
21
quq_CCCP, но ведь Вы написали о константных переменных, значение которых защищены от изменения, а от чего же защищены константные функции?
Если верить моим исследованиям, то они защищены от неконстантных глобальных переменных и от неконстантных функций, которые могут находиться в них, но зачем?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.