Добавлен , опубликован

vJass

Содержание:

Начиная с версии 0.9.A.0 начинается поддержка оптимизации скриптов в JassHelper. На данный момент, все что доступно, это операция вложение функций.
Вложение функций подразумевает поиск мест с вызовом функции и замены вызова на тело этой функции. Процесс вложения производится далеко не всегда, поскольку может привести к неправильному выполнению кода карты. В основном, операция вложения производится в случае простых функций. Например:
function MyFunction takes integer a, integer b returns integer
    return myarray[a]*b
endfunction

function MyOtherFunction takes nothing returns integer
    return MyFunction(3,4)
endfunction
Будет заменено на
function MyOtherFunction takes nothing returns integer
    return myarray[3]*4
endfunction
Вложение функций, это довольно важная часть оптимизации кода, поскольку снижение количества вызовов функций приводит к увеличению скорости выполнения скриптов карты. В то же время, это позволяет вам писать более чистый код, разрешая не тревожиться из-за объявления крохотных функций.
Когда тело функции будет вложено при оптимизации? Текущий алгоритм придерживается следующих правил:
  • Функция в одну строку
  • Если вызываемая функция вызывает другую функцию, чье тело начинается с set, call или return
  • Если функция не устанавливает значение ни одному из ее аргументов
  • Если обращение к аргументам функции совершается единожды и в порядке, в котором они указаны при объявлении функции
  • Если в теле функции совершается вызов функций, что принимают аргументы с уже известными значениями

`
ОЖИДАНИЕ РЕКЛАМЫ...