Сводка производительности основных фреймворков JavaScript за 2017 г.

JavaScript Vue.js React.js Angular.js внешний фреймворк

обновление: обновил график

предисловие

Как разработчик JavaScript, вы, возможно, столкнулись с рядом фреймворков и даже освоили один или два из них. Раньше я предпочитал фреймворки, это облегчало мою разработку. Но после стольких замечательных концептуальных изменений во внешнем интерфейсе, от Virtual-DOM до управления состоянием, я также думаю о производительности самого фреймворка и накладных расходах на различные типы операций.Эта статья Сравнение производительности основных фреймворков будут выполнены, и различия в производительности между ними будут суммированы.

Использование: MacBook Pro 15 (i7 2,5 ГГц, 16 ГБ ОЗУ, OSX 10.13.1, Chrome 62.0.3202.94 (64-разрядная версия))

Фреймворки, которые будут воспроизводиться

  • vanillajs - Существование Господа Бога, вездесущая и всемогущая структура, широко используемая при разработке различных основных веб-сайтов.
  • реагировать - Сын Facebook, он всегда утверждал, что ему меньше 15 лет. Когда все думали, что у него нет надежды дорасти до одного года, он внезапно вырос до пятнадцати лет.
  • angularJS - Старший сын отца Google, хотя и поддерживается до сих пор, но из-за рождения младших братьев популярность уже не так хороша, как раньше
  • угловатый
  • vue - Таинственная сила с Востока, восходящая звезда фреймворка, но его всегда будут сравнивать с вышеперечисленными фреймворками, формируя главную драму фронтенд-развлекательного круга.

В случае использования КЛЮЧА

Когда вы связываете элементы DOM с данными, данные изменяются, а ключи обновляются.

(Представление данных: среднее мс ± отклонение мс (относительно самого быстрого кратного))

Тестовые задания vanillajs vue-v2.5.3 angular-v5.0.0 react-v16.1.0 angular-v1.6.3
создать строку:
Создайте 1000 строк контента после загрузки страницы.
137.8±9.9(1.0) 169.2±3.6(1.2) 185.7±7.8(1.3) 201.2±12.1(1.5) 222.9±8.1(1.6)
обновить строку:
Обновите содержимое всех 1000 строк.
155.7±5.4(1.0) 161.8±3.9(1.0) 179.3±6.5(1.2) 169.0±4.3(1.1) 232.3±8.7(1.5)
Частичное обновление:
Обновить содержимое строк, кратных десяти, в таблице с 10 000 строк
76.5±4.8(1.0) 168.1±7.4(2.3) 73.5±4.9(1.0) 90.9±3.3(1.2) 87.1±5.3(1.2)
выбрать строку:
Время, когда мышь щелкает строку, чтобы выделить
10.8±3.5(1.0) 9.8±2.5(1.0) 7.6±4.0(1.0) 12.4±4.1(1.0) 10.0±4.7(1.0)
поменять строку:
Поменять местами две строки в таблице из тысячи строк
18.3±4.6(1.0) 19.0±2.8(1.0) 118.5±2.8(6.5) 121.8±4.2(6.7) 125.9±5.3(6.9)
удалить строку:
удалить строку
43.1±1.6(1.0) 52.5±1.8(1.2) 46.1±2.6(1.1) 51.5±2.0(1.2) 48.6±2.5(1.1)
Создать несколько строк:
Создайте 10000 строк контента
1,374.5±33.3(1.0) 1,521.4±55.7(1.1) 1,682.0±53.1(1.2) 2,033.7±32.0(1.5) 2,112.0±77.7(1.5)
дополнительная линия:
Добавить 1000 строк в таблицу с 10000 строками
217.4±7.3(1.0) 338.4±10.3(1.6) 257.6±11.1(1.2) 271.8±9.9(1.3) 371.6±60.4(1.7)
пустая строка:
Очистить содержимое таблицы с 10 000 строк
177.1±10.2(1.0) 240.9±11.4(1.4) 360.3±16.4(2.0) 224.4±6.0(1.3) 517.8±62.0(2.9)

В операциях с таблицами с высокими накладными расходами накладные расходы на замену строк являются наиболее тяжелым ударом для каждой платформы, но из-за разной глубины базовых алгоритмов сравнения Vue работает лучше в этом отношении.В механизме обработки событий платформа показывает, что оптимизация событий, а производительность react немного уступает из-за большого количества дополнительной логики событий. С точки зрения общей операционной производительности в качестве эталона используется vanillajs, за которым следуют vue (1,27), angularJS (1,47), react (1,49) и angular (1,77).

Время начала

Тестовые задания vanillajs vue-v2.5.3 angular-v5.0.0 react-v16.1.0 angular-v1.6.3
Время запуска при бездействии процессора и сети 38.8±2.9(1.0) 55.4±1.6(1.4) 97.4±3.5(2.5) 58.4±1.1(1.5) 96.9±23.9(2.5)
Время, необходимое для загрузки всех скриптов во фреймворке 4.0±0.3(1.0) 20.8±0.7(1.3) 45.9±1.6(2.9) 22.1±0.6(1.4) 56.8±18.4(3.6)
Время, потраченное на основной поток (стиль, макет и т. д.) 162.1±2.6(1.0) 174.2±2.5(1.1) 216.8±4.6(1.3) 176.9±2.3(1.1) 224.0±52.1(1.4)
Общий размер (в байтах) всех ресурсов, передаваемых по сети 163,967.0(1.0) 227,410.0(1.4) 304,139.0(1.9) 263,076.0(1.6) 337,157.0(2.1)

С точки зрения времени запуска очевидно, что vue и react быстрее, поскольку у братьев angular относительно большой фреймворк, загрузка скрипта, время запуска, размер скрипта и т. д. не так хороши, как у других фреймворков.

использование памяти

Тестовые задания vanillajs vue-v2.5.3 angular-v5.0.0 react-v16.1.0 angular-v1.6.3
Использование памяти после загрузки страницы 3.0±0.1(1.0) 3.6±0.1(1.2) 6.7±0.1(2.2) 3.7±0.1(1.2) 4.3±0.1(1.4)
Использование памяти после добавления 1000 строк 3.7±0.1(1.0) 7.2±0.0(2.0) 10.5±0.0(2.9) 7.6±0.0(2.1) 11.9±0.0(3.2)
Объем памяти для обновления кратных 10 строк в 1000 строк 3.7±0.1(1.0) 7.3±0.0(2.0) 10.6±0.0(2.9) 8.5±0.0(2.3) 11.9±0.0(3.2)
Использование памяти после замены 1000 строк контента 5 раз 3.6±0.1(1.0) 7.3±0.0(2.0) 10.8±0.0(3.1) 9.0±0.0(2.5) 12.4±0.0(3.5)
Использование памяти после создания 1000 строк контента 5 раз 3.2±0.0(1.0) 3.8±0.0(1.2) 7.1±0.0(2.2) 4.7±0.0(1.5) 4.7±0.0(1.5)

С точки зрения использования памяти братья angular все еще слишком велики, но тенденция роста angularJS все еще относительно низка, и тенденция роста angular также относительно велика, и тенденция роста vue относительно стабильна, но реакция заменена и обновляется в больших количествах.В работе накладные расходы сильно возрастают и стабильность не сильная.

Суммировать

Видно, что vanillajs выигрывает во всех аспектах.Если вы хотите получить лучшую оптимизацию производительности, это не просто выбор фреймворка. Также необходимо подумать о том, как лучше использовать vanillajs, подумать об операциях, близких к браузеру, и подумать о логике из принципа обновления фреймворка, чтобы получить лучшую производительность.

Источники данных:js-framework-benchmark