Производительность JavaScript фреймворков

Решил провести небольшое исследование на тему производительности JavaScript фреймворков в различных браузерах…

В качестве инструмента взят тест SlickSpeed, в списке испытуемых оказались следующие фреймворки:

Судить о популярности данных фреймворков можно по графику:

А так же список браузеров:

  • Internet Explorer 5.5
  • Internet Explorer 6.0
  • Internet Explorer 7.0
  • Internet Explorer 8.0 B2
  • Opera 9.62
  • Mozilla Firefox 3.0.4
  • Safari 3.1.2
  • Google Chrome 0.4.154

IE 5.5 – в нем все фреймворки показывали странные результаты, а jQuery отказался работать – он воспринял только поиск по Id.
IE 8.0 – сыроват, некторые запросы даже кушали всё процессорное время, Dojo и YUI возвращали ошибки по многим запросам.

Результат тестирования:

MooTools jQuery Prototype YUI Dojo Avg(ms)
Firefox 3.0.4 172 181 309 430 128 244
Opera 9.62 210 120 184 391 115 204
Google Chrome 125 84 438 347 105 219
Safari 3.1.2 135 131 224 497 119 221
Internet Explorer 5.5 811 0 4035 3672 1045 2390
Internet Explorer 6.0 1061 847 5085 3929 1265 2437
Internet Explorer 7.0 527 414 2236 1406 643 1045
Internet Explorer 8.0 567 326 1781 1070 0 936
Avg 451 300 1786 1467 488

Ну а теперь слайды – сводный график всех доступных мне браузеров:

All browsers and Frameworks

Откинем, странный по своей сути, браузер IE – дабы получше разглядеть происходящее:

JavaScript Framework Perfomance w/o IE

Как видим – с правильными браузерами лучше всего работает Dojo (116,75ms) – стабильно быстро – но c Safari у него возникают ошибки. Совсем чуть-чуть отстал от него jQuery (129ms), затем Mootools (160,5ms), Prototype (288,75ms) и YUI (416,25ms).

Если же заострить свое вниманием на IE то мы увидим следующий график:

JavaScript Framework Perfomance IE average

Тут лучше всех себя показал jQuery (хотя и отказался работать в IE 5.5), второй – MooTools, Dojo оказался на 3-м месте, и отвратительно показал себя при работе в IE 8.0b2.

Если же подводить итог о самом быстром JavaScript фреймворке – то побеждает jQuery (в основном за счет творений MS, ибо они оказались ему по зубам).

Если же мерять производительность браузеров то получим следующий рейтинг:

  1. Opera 9.62 (204ms)
  2. Google Chrome 0.4.154 (219,8ms)
  3. Safari 3.1.2 (221,2ms)
  4. Mozilla Firefox 3.0.4 (244ms)
  5. Internet Explorer 8.0 B2 (936ms) – идут верной дорогой
  6. Internet Explorer 7.0 (1045,2ms)
  7. Internet Explorer 5.5 (2390,75ms)
  8. Internet Explorer 6.0 (2437,4ms)

P.S. Если же Вас смущает выбор фреймворков – то можете взглянуть на ресурс http://lusever.ru/css-selectors/, если Вам и этого мало – то тогда уж сами разворачивайте библиотеку SlickSpeed и тестируйте – да не забудьте о результате рассказать.

P.P.S. Так же подобное исследование проводил Юрий Дроздов в начале этого года, так что можете сравнить прогресс в развитии фреймворков…

14 thoughts on “Производительность JavaScript фреймворков”

  1. А с версией оперы в статье не опечатка случайно? Если не опечатка, тогда почему опера такой старой версии?

  2. А що на рахунок останніх версій Opera?
    А то 6.26 – це якось на рівні IE5.5, коли було давно і тоді все було неправда…

  3. На графики не плохо бы добавить единицу измерений.
    Не вижу смысла тестировать что-либо в ие 5.5

  4. Не понятно, почему тестирование JavaScript фреймворков всегда сводится к проверке скорости выборки DOM-узлов по CSS-селекторам. Я думаю, «jQuery» выигрывает в этом тесте, потому что изначально разрабатывался, как библиотека, позволяющая использовать синтаксис CSS-селекторов и «XPath», и большинство оптимизаций велось именно в этом направлении, а в остальных фреймворках — это только дополнительная возможность (кроме YUI Selector). Скорость выборки элементов, не отражает полностью производительность фреймворка, но является важным показателем.

  5. Согласен с Octane
    Производительность фреймфорков – это не производительность селекторов.
    А если стоит цель найти “самые быстрые селекторы”, то логичнее включить в тест библиотеки оптимизированные под это(например Peppy).
    Ещё можно получить весьма интересные результаты на связке
    Prototype-1.6.0.3 + FF3.1 или Prototype-1.6.0.3 + IE8 поскольку тут будет использоваться native selectors API.

  6. Кстати заметьте, что обащенной супер-производительности Chrome не наблюдается :)

  7. хм. ну если вынести за скобки общую бесполезность этого тестирования :) то есть большая претензия к графикам…

    почему не бар-чарты? точки не являются развитием друг-друга, следовательно соединять их линией преступно!

  8. Snowcore, да у FF отстал от лидера на 40ms… Один раз моргнуть. Это не смертельно…

  9. А «Firebug» был выключен, когда тестировали в «Firefox»?

    +1

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.