Оптимизация JavaScript

Поэтому я пишу игру на JavaScript (не веб-игру, использую игровой движок, где JavaScript является языком сценариев). К сожалению, движок JavaScript игрового движка является древней версией SpiderMonkey, которая немного медленно запускает мою игру. Хотя он не очень медленный, он достаточно медленный, поэтому я решил немного оптимизировать его.

Я знаю некоторые базовые оптимизации, такие как использование локальных переменных вместо глобальных (что в любом случае является хорошей идеей), использование префикса вместо постфиксного увеличения / уменьшения, обратного отсчета вместо циклических операций вверх, но каковы некоторые более хорошие оптимизации JavaScript?

2 ответа

Решение

Я не знаю, как структурирован ваш код, но скажем, что его части находятся в функциях или циклах, которые часто выполняются:

  • замещать if() с ? : где возможно

например

if (expr) a = 1;
else a = 2;

становится

a = expr ? 1 : 2;
  • повернуть серию if()с в switch() если возможно
  • если вы используете substr(), substring() или же slice() проверьте, какой из них быстрее (во встроенном браузере я однажды заметил разницу в 3 раза). Следите за их параметрами!
  • Избегайте пересчета значений или повторного вызова одной и той же функции с теми же параметрами, даже если она является второстепенной
  • если вы снова и снова обращаетесь к одному и тому же элементу массива, сохраните его в локальной переменной
  • eval() очень медленно (помимо того, что это зло)
  • Имейте в виду, что JavaScript-движок является однопоточным. Ничто не идет параллельно, даже таймеры или интервалы.

Если код оказывается трудным для чтения, пишите комментарии.

Вместо того, чтобы испортить исходный код, вы дали попробовать Closure Compiler? Это компилятор из javascript в javascript, который выполняет несколько оптимизаций. В основном для размера, но результирующий JS также работает часто быстрее. Не знаю, если оптимизация, однако, специфична для V8.

Другие вопросы по тегам