2010-02-17 1 views
1

Есть ли способ ускорить JS-скрипты (я имею в виду некоторые сложные манипуляции DOM, например игры или анимации)?Ускорение Javascript?

+14

'alert (« Пожалуйста, купите новый компьютер и установите браузер для веб-браузера для лучшего опыта »);' – jball

ответ

3

Theres действительно не способ действительно ускорить его. Вы можете сжать его, но это будет не намного быстрее.

+0

Согласованный, уплотнение просто уменьшает размер файла (и * возможно увеличивает * скорость немного). – Kredns

2

Использовать двигатель JavaScript V8? : P

Единственный способ, которым вы можете это сделать, - уменьшить количество доступа к dom и сфере видимости в вашем коде. , например. при доступе к элементу в DOM несколько раз, а

document.something.mydiv.myelement.property1 = this 
document.something.mydiv.myelement.property2 = bla 
document.something.mydiv.myelement.property3 = foo 
document.something.mydiv.myelement.property4 = bar 

сделать

var myel = document.something.mydiv.myelement 
myel.property1 = this 
myel.property2 = bla 
myel.property4 = bar 
myel.property3 = foo 

Обратите внимание, что некоторые JavaScript двигатели будут автоматически сделать эту оптимизацию для вас, но и для старых браузеров, последний, безусловно, будет быстрее, чем первый, потому что только один раз нужно пройти через цепочку доступа, чтобы достичь миля.

Посмотрите это видео для получения дополнительных методов оптимизации javascript http://www.youtube.com/watch?v=mHtdZgou0qU

2

Если вы имеете в виду вне браузера, то вы должны использовать самый быстрый из них, то есть Chrome's V8 Java Script engine.

В браузере существует множество методов оптимизации для ускорения загрузки Java Script, вот хорошее место для optimization techniques от Google.

  • Скомпилируйте свой Java-скрипт с помощью инструмента, такого как компрессор YUI, чем подавайте его на gzipped.
  • Только загрузите необходимый минимум
  • Сложные анимации по-прежнему лучше всего плагинами Rich UI, то есть Flash/Silverlight

Для анимации рассмотрим использование HTML 5 Canvas элемент для браузеров, которые поддерживают его, вернитесь к вспышке для тех, которые этого не делают.

Карты Google - хороший пример того, что возможно с помощью чистого Java Script, хотя они потратили ресурсы богатства, оптимизируя производительность для каждого браузера. Как всегда лучший способ повысить скорость - это сравнить различные подходы. например div.innerHTML = "", в большинстве случаев быстрее, чем использование DOM для динамического добавления элементов и т. д.

1

Это очень расплывчатый вопрос. Есть миллион вещей, которые вы можете сделать для ускорения вашего кода (Ajaxian имеет 157 articles по теме на момент написания этой статьи), но нет кнопки «Сделать меня быстрее», которая волшебным образом запускает все сценарии быстрее. Если бы было, жизнь была бы , так что намного проще.

1

closure project от Google содержит некоторые претензии на этих строках, хотя я не пробовал его лично.

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

1

Попробуйте сделать анимацию и отобразить изменения в позиционированных или «выключенных» элементах - перерисовать страницу наименьшее количество раз.

Сделайте несколько изменений стиля, изменив cssText или className, а не одно свойство за раз.

Если вам нужно дважды найти элемент или свойство в том же процессе, вы должны сделать локальную ссылку в первый раз.

И не забудьте отключить отладчик, если вы не отлаживаете.

2

Лучшее, что вы можете сделать, это оптимизировать свой код. Используйте profiler - для Firefox есть Firebug, Safari и Windows IE 8 есть встроенные JavaScript-отладчики и профилировщики (по крайней мере, я считаю, что IE 8, кто-то меня поправьте, если я ошибаюсь ...). Запуск профиля на вашем коде покажет вам, где самые медленные части, и это те разделы, на которые вы можете сосредоточиться на оптимизации ... возможно, с более подробными вопросами.