Ускорение JavaScript? - PullRequest
       8

Ускорение JavaScript?

1 голос
/ 17 февраля 2010

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

Ответы [ 7 ]

3 голосов
/ 17 февраля 2010

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

2 голосов
/ 17 февраля 2010

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

2 голосов
/ 17 февраля 2010

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

Внутри браузера есть множество методов оптимизации для более быстрой загрузки Java Script, здесь хорошее место для методов оптимизации от google.

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

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

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

2 голосов
/ 17 февраля 2010

Использовать движок V8 javascript? : P

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

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 автоматически выполнят эту оптимизацию для вас, но для более старых браузеров последний будет определенно быстрее, чем первый, потому что для достижения myel требуется только один раз пройти через цепочку доступа

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

1 голос
/ 17 февраля 2010

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

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

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

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

1 голос
/ 17 февраля 2010

Проект закрытия от Google делает некоторые заявления в этом направлении, хотя я лично не пробовал.

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

1 голос
/ 17 февраля 2010

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

...