Тест для библиотеки Google Closure - PullRequest
6 голосов
/ 20 июня 2011

При поиске производительности библиотек Javascript у меня появляется много сайтов, показывающих сравнение производительности между следующими популярными библиотеками

  • jQuery (довольно медленно)
  • Прототип (очень медленно в IE)
  • Dojo (самый быстрый, когда приходит в DOM)
  • ExtJs (в среднем)
  • Micro JS (медленно, но нормально)

Но в любом из тестов Google Closure Library - это НЕ . Разве это не похоже на любую другую стандартную библиотеку, потому что сказано, что это процедурная библиотека стилей.

Мне нужны некоторые тесты производительности библиотеки Closure. И хотел бы посоветовать: «Хорошо ли переходить на библиотеку Closure при использовании dojo на начальной стадии и jQuery на некоторой промежуточной стадии»

Google сообщает, что он использует библиотеку закрытия во всех своих приложениях, таких как Gmail и т. Д ... Производительность очень хорошая. Это из-за библиотеки? Может ли промежуточный кодер javaScript, который может написать OO-код в JS, использовать библиотеку Closure на очень высоком уровне, или целесообразно продолжать использовать DOJO.

Ответы [ 3 ]

7 голосов
/ 21 июня 2011

On Closure Library

Closure Library очень близка по стилю к Dojo - фактически, когда она была впервые разработана, авторы черпали вдохновение из Dojo.

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

Лично мне это не нравитсяэто умаляет красоту основанных на классах конструкций Dojo (просто для удовлетворения компилятора), и все эти длинные пространства имен goog.kitchen.sink.getMeACupOfTeaSoICanRelax() делают написание (и чтение) программ JavaScript огромной болью - тот факт, что длинные пространства имен оптимизируются благодарякомпилятор не делает это слишком (для меня) чрезмерным их использованием, потому что вы можете .

Кроме того, он одержим попыткой заставить программы JavaScript выглядеть как можно больше ООП (возможно, потому чтотонны Java-программистов в Google) означает чрезмерную зависимость от концепций ООП, таких какметоды получения и установки свойств и избежание многих полезных (и уникальных) функций JavaScript, таких как mixin's.Если вы Java-программист, изучающий программирование на JavaScript, вы будете чувствовать себя как дома, используя Closure Library.Это не делает его немного элегантным.

Тем не менее, он предлагает промышленную мощь среду, которая является надежной - так как Google построил ОГРОМНЫЕ сайтов с ним.Это то, что (по моему личному мнению) является надежным и хорошо работает, но выглядит некрасиво.

Тем не менее, Dojo также надежен, но более волатилен, поскольку это проект с открытым исходным кодом.Вы сами решаете, хотите ли вы переключиться.

На компиляторе Closure и Dojo

На самом деле вы можете использовать Dojo с компилятором Closure в расширенном режиме.См. эту ссылку для описания того, как это сделать.Исходя из моих собственных тестов, программа, скомпилированная компилятором Closure, обычно примерно на 25% меньше, чем минимизированные версии (из-за устранения мертвого кода), и работает на 20-30% быстрее для простых страниц и больше для больших страниц.

Скорость работы библиотек в целом

Все остальные библиотеки имеют свои особенности и особенности, каждая из которых сочетает в себе удобство использования, гибкость и мощность с производительностью.Например, jQuery создает много объектов jQuery в пути и снижает производительность, особенно в старых браузерах.Тем не менее, современные браузеры, особенно.Google Chrome, на самом деле, выполняет оптимизацию, так что снижение производительности при использовании jQuery минимально.

Вам действительно нужно спросить себя почему вам нужен JavaScript для быстрой работы.Большинство современных браузеров уже достаточно быстрые, так что это действительно не очень важно при выборе библиотеки.Лучше выбирать свою библиотеку в зависимости от того, подходит она вам или нет (и под рукой), а не от того, работает ли она в браузере на 10 мс быстрее.

Если вы пишете веб-сайт для мобильных устройств,или, например, при написании HTML5-игры вам может понадобиться выжать последнее падение производительности (в играх) и / или сэкономить как можно больше ресурсов (в мобильных устройствах).В таких случаях я обнаружил, что использование Dojo, а затем компиляция с помощью Closure Compiler дает одну из лучших комбинаций для таких сценариев.

1 голос
/ 21 июня 2011

с использованием dojo на начальной стадии и jQuery на некоторой промежуточной стадии

Вы ошиблись. Dojo намного более продвинут, чем jQuery. Сам jQuery для начинающих.

Может ли промежуточный кодер javaScript, который может писать OO-код в JS, использовать библиотеку Closure на очень высоком уровне или целесообразно продолжать использовать DOJO.

Любая библиотека будет работать. Проведите несколько часов, играя с Google Closure и посмотрите, как вы его найдете. Я сомневаюсь, что есть большая разница, кроме простой интеграции с библиотеками Google, такими как диаграммы Google.

1 голос
/ 21 июня 2011

Было бы неплохо подтвердить это некоторыми данными.Там ложь, статистика и ориентиры.Например, вы можете спросить себя, почему фреймворк x медленнее, чем фреймворк y.В общем, тесты не отражают сценарии реального мира и заканчиваются весело, но бесполезно.Я работал с jQuery уже несколько лет, и я не сталкивался с ситуациями, когда он медленный или оказывал какое-либо влияние на удобство использования.

Если ваш код слишком медленный, и вам нужно его оптимизировать,Затем вы можете тестировать, профилировать и отлаживать сладкий Иисус из этого кода.Такие вещи, как gmail, скорее всего, подвергнутся такому лечению.Таким образом, gmail, вероятно, не быстрый из-за замыкания, но быстрый из-за интеллектуального программирования.

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

edit: on closure Выбор замыкания может иметь несколько преимуществ при создании больших и сложных приложений: есть несколько хороших инструментов оптимизации полосы пропускания, инструментов для управления более сложными приложениями.Существует хорошее руководство о том, как написать правильный код, и инструменты для проверки того, что вы следовали этим рекомендациям (закрытие, довольно интересное).Есть хорошая система шаблонов (вероятно, не улучшит вашу производительность как таковая) и система управления зависимостями.Если вы хотите интегрировать эти инструменты или опираться на них, я бы сказал, пойти на это, в противном случае вы можете быть спокойны и довольны своим выбором для додзё.

...