WarCraft 3: 13. Оптимизация

WurstScript
Компилятор Wurst имеет встроенный инструмент для оптимизации, который, в случае активации, будет оптимизировать генерируемый код различными путями. Оптимизация Jass чрезвычайно важна для поддержки высокого FPS при использовании достаточно сложных систем. Оптимизатор чистит код, делая его меньше, избавляя от неиспользуемых конструкций дабы минимизировать использование памяти, а так же обеспечивает некоторое увеличение скорости выполнения кода и общей производительности.

Чистка

Процедура чистки кода включает в себя следующее
  • Удаление комментариев
  • Удаление ненужных пробелов
  • Удаление лишних скобок
  • Удаление неиспользуемых переменных и функций
  • Автоматическое обнуление переменных

Преобразование имен

Короткие имена выполняются быстрее и занимают меньше пространства, поэтому все имена функций и переменных преобразуются в настолько короткие, насколько это возможно.

Вложение

Вложение (inline) — процедура, при которой место вызова функции заменяется телом этой функции.
Вложение, это достаточно непростая задача, однако она дает хорошую производительность системе с большим количеством различных функций. Это так же позволяет упростить процесс написания кода, так как у вас отпадает необходимость беспокоиться о потере производительности при его разделении на множество функций. Некоторые функции из blizzard.j так же могут быть вложенными.
На данный момент, вложенными могут быть только функции имеющие только одну точку выхода. Это тот случай, когда функция не имеет оператора return или он располагается в самом конце функции.
Будет функция вложена или нет, зависит от некоторой эвристики компилятора. Эвристика пытается балансировать между скоростью выполнения и размером скриптов карты, так как вложение делает код больше, но позволяет выполнять его быстрее. Более вероятно функция будет вложенной, если она короткая. Менее вероятно функция будет вложенной, если она вызывается из множества различных участков кода. Лучше не полагаться на гарантию вложения, так как эвристика может меняться от случая к случаю.
Глобальные переменные имеющие постоянное значение так же могут быть вложенными.

Вычисление констант

Если выражение подразумевает вычисление исключительно из набора констант, вычисление будет произведено на этапе компиляции
До компиляции
if (3*6) > x
    ...
После
if 18 > x
    ...

Просмотров: 31

Комментарии пока отсутcтвуют