Сравнение производительности фронтэнд-фреймворков React, Angular, Vue.js и Svelte | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 30 ноября, печатный экземпляр отправим 4 декабря.

Опубликовать статью в журнале

Автор:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №36 (483) сентябрь 2023 г.

Дата публикации: 11.09.2023

Статья просмотрена: 293 раза

Библиографическое описание:

Гончар, Д. О. Сравнение производительности фронтэнд-фреймворков React, Angular, Vue.js и Svelte / Д. О. Гончар. — Текст : непосредственный // Молодой ученый. — 2023. — № 36 (483). — С. 11-15. — URL: https://moluch.ru/archive/483/105934/ (дата обращения: 16.11.2024).



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

Ключевые слова: фронтенд, фреймворк, производительность

С 21 ноября по 22 декабря 2022 года на платформе stateofjs.com [1] проводился опрос среди разработчиков, выразивших желание участвовать. Опрос показал предпочтения разработчиков, выделив четыре ведущих фреймворка: React, Angular, Vue.js и Svelte. Участникам предлагался вопрос: «Используете ли вы фреймворк с названием X?» В ходе проведенного опроса респонденту предоставлялась возможность выбора нескольких фреймворков одновременно. Были предложены следующие варианты ответов [2]:

  1. Использую, и хочу использовать в будущем
  2. Использую, но не хочу использовать в будущем
  3. Не использую, но хочу попробовать
  4. Не использую, не хочу пробовать
  5. Никогда не слышал о таком

Процентное соотношение разработчиков, применяющих конкретный фреймворк, рассчитывалось по формуле 1.

Формула 1

Где — количество ответивших «Использую, и хочу использовать в будущем»,

— количество ответивших «Использую, но не хочу использовать в будущем»,

— общее количество ответивших.

Результаты опроса показаны на рис. 1.

Фронтенд-фреймворки и процент их использования

Рис. 1. Фронтенд-фреймворки и процент их использования

Представленные статистические данные соответствуют ожиданиям специалистов в области разработки. React, Angular и Vue составляют «ведущую тройку», которая занимает топовые позиции на протяжении длительного времени. Их высокая популярность обусловлена длительным периодом присутствия на рынке, доказанной стабильностью, наличием активного сообщества и обширными образовательными ресурсами.

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

Методика тестирования производительности фронтэнд фреймворков

Выбранная методика представляет собой имитацию действий с таблицей [3]. Операции, такие как добавление, удаление и редактирование элементов в таблице, характеризуют общую производительность веб-приложений. Для анализа производительности каждой операции будет замеряться время, необходимое для её выполнения, в миллисекундах. В качестве базового эталона для сравнения производительности фреймворков будет использоваться нативная реализация на чистом JavaScript, без применения каких-либо дополнительных фреймворков или библиотек. В качестве метрики для сравнения будет использован коэффициент деградации по отношению к нативной реализации. Этот коэффициент будет представлен в таблице в скобках после основной метрики. Для ранжирования фреймворков по их производительности будет использовано геометрическое среднее показателя деградации.

Конфигурация тестового оборудования

Устройство: MacBook Pro 14 (32 GB RAM, 8/14 Cores, OSX 13.5 (c))

Браузер: Chrome 116.0.5845.82 (arm64)

Инструмент автоматизации. Для минимизации человеческих ошибок и обеспечения максимальной стабильности тестового окружения используется Puppeteer.

Тестовый набор описан в таблице 1.

Таблица 1

Тест кейсы для измерения производительности

Название

Описание

Создание строк

Добавление 1000 строк после загрузки страницы (без прогрева)

Замена всех строк

Время замены всех 1000 строк в таблице (с 5 итерациями прогрева)

Частичное обновление

Время обновления каждой 10-й строки для таблицы с 10 000 строк (с 5 итерациями прогрева)

Выбор строки

Время выделения строки после клика по ней (с 5 итерациями прогрева)

Перестановка строк

Время на перестановку двух строк в таблице с 1 000 строк (с 5 итерациями прогрева)

Удаление строки

Время на удаление строки из таблицы с 1 000 строк (с 5 итерациями прогрева)

Создание большого количества строк

Добавление 10 000 строк (без прогрева)

Добавления строк в большую таблицу

Время на добавление 1 000 строк в таблицу из 10 000 строк (без прогрева)

Удаление строк

Время на очистку таблицы, содержащей 10 000 строк (без прогрева)

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

Результаты тестирования представлены в таблице 2.

Таблица 2

Результаты тестирования производительности

Тест кейс

JavaScript

Vue.js

Svelte

React

Angular

Создание строк

38.3

43.9

(1.21)

49.5

(1.37)

45.3

(1.25)

46.4

(1.28)

Замена всех строк

39.1

(1)

44.6

(1.16)

52.4

(1.36)

48.3

(1.25)

51.2

(1.33)

Частичное обновление

83.5

(1)

100.3

(1.21)

93.9

(1.13)

106.3

(1.28)

93.8

(1.13)

Выбор строки

9.6

(1)

17.5

(1.83)

17.0

(1.77)

22.0

(2.29)

17.1

(1.78)

Перестановка строк

24.0

(1)

27.8

(1.16)

27.9

(1.16)

160.2

(6.67)

181.5

(7.56)

Удаление строки

38.4

(1)

45.2

(1.18)

41.1

(1.07)

44.6

(1.16)

42.7

(1.11)

Создание большого количества строк

396.7

(1)

464.2

(1.17)

509.6

(1.29)

624.4

(1.58)

496.2

(1.26)

Добавления строк в большую таблицу

84.4

(1)

93.7

(1.13)

109.9

(1.33)

103.2

(1.25)

103.0

(1.25)

Удаление строк

25.1

(1)

32.1

(1.28)

37.0

(1.47)

32.9

(1.31)

54.1

(2.15)

Геометрическое среднее коэффициента деградации

1

1.25

1.31

1.65

1.66

Результаты тестирования свидетельствуют о том, что в большинстве рассмотренных кейсов производительность фреймворков приближена к одним и тем же показателям. Особое внимание следует уделить кейсу «Выбор строки»: все фреймворки показали замедление на коэффициент 1.92 в среднем по отношению к нативной реализации. Кейс «Перестановка строк» оказался наиболее проблемным для React и Angular — их показатели деградации составили 6.67 и 7.56 раз соответственно по сравнению с базовой реализацией на чистом JavaScript. Для наглядности сравнения результаты тестового кейса «Перестановка строк» представлены на рис. 2.

Результаты тест кейса «Перестановка строк»

Рис. 2. Результаты тест кейса «Перестановка строк»

Представим геометрическое среднее коэффициента деградации производительности в форме диаграммы для наглядного анализа результатов.

Геометрическое среднее коэффициента деградации производительности

Рис. 3. Геометрическое среднее коэффициента деградации производительности

Исходя из результатов проведенного исследования, рейтинг фреймворков по производительности выглядит следующим образом: Vue.js на первом месте, далее идут Svelte, React и, наконец, Angular. Тем не менее, если сравнивать этот рейтинг с долей использования данных фреймворков в индустрии, где React лидирует, за ним следует Angular, потом Vue и Svelte, становится очевидным, что производительность не является единственным фактором, определяющим популярность фреймворка.

Несмотря на важность производительности, другие факторы, такие как стабильность, удобство использования, наличие обширной документации, поддержка сообщества и спрос на рынке труда, также играют ключевую роль в выборе разработчиками того или иного фреймворка. При принятии решения о выборе инструмента для разработки следует учитывать все эти параметры, а не только одну характеристику, такую как производительность [4].

Литература:

  1. Состояние JavaScript — Ежегодное исследование экосистемы JavaScript для разработчиков // State of JavaScript. URL: https://2022.stateofjs.com/ru-RU/ (дата обращения: 10.09.2023).
  2. Состояние JavaScript — Фронтенд-фрейворки // State of JavaScript. URL: https://2022.stateofjs.com/ru-RU/libraries/front-end-frameworks/ (дата обращения: 10.09.2023).
  3. Interactive Results — A comparison of the performance of a few popular javascript frameworks. URL: https://krausest.github.io/js-framework-benchmark/current.html
  4. Александр Серенко — Как правильно выбрать фронтэнд framework или почему нельзя верить сравнению фреймверков. URL: https://medium.com/fafnur/ %D0 %BA %D0 %B0 %D0 %BA- %D0 %BF %D1 %80 %D0 %B0 %D0 %B2 %D0 %B8 %D0 %BB %D1 %8C %D0 %BD %D0 %BE- %D0 %B2 %D1 %8B %D0 %B1 %D1 %80 %D0 %B0 %D1 %82 %D1 %8C- %D1 %84 %D1 %80 %D0 %BE %D0 %BD %D1 %82 %D1 %8D %D0 %BD %D0 %B4-framework-e995d2765682
Основные термины (генерируются автоматически): итерация прогрева, строка, таблица, нативная реализация, удаление строки, OSX, RAM, выбор строки, обширная документация, частичное обновление.


Ключевые слова

Фреймворк, производительность, фронтенд

Похожие статьи

Разработка и внедрение библиотеки валидации на клиентском языке JavaScript

Библиотеки проверки подлинности играют решающую роль в разработке веб-приложений, особенно в обеспечении целостности и безопасности данных. Цель этой статьи — помочь разработчикам в процессе создания пользовательской библиотеки проверки подлинности д...

Эволюция архитектурных стилей при разработке информационных систем: от монолитных приложений к микросервисной архитектуре

Архитектура приложения является краеугольным камнем в разработке программного обеспечения (далее ПО), определяя структуру того, как его основные компоненты взаимодействуют друг с другом. Существуют различные подходы к проектированию архитектуры прило...

Сравнительный анализ библиотек языка PHP для формирования документов веб- сервисами

Задача автоматического создания файлов часто встает перед web- разработчиками, в частности в сфере разработки платформенных решений для транспорта. Для упрощения процесса формирования документов существует несколько библиотек для языка PHP. В статье ...

Контекстно ориентированный фреймворк для «умного города» с точки зрения Cloud, IoT, Big Data

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

Язык программирования Python. Библиотеки Python

Язык программирования Python — это высокоуровневый и интерпретируемый язык программирования, который был создан Гвидо Ван Россумом в 1989 году и выпущен в 1991 году, которые «автоматизируют скучные вещи» (как выразилась одна популярная книга по изуче...

Модификация архитектуры web-приложения, основанной на паттерне CQRS, для повышения производительности

В работе рассматривается способ организации архитектуры web-приложения на основе паттерна CQRS. В основе архитектуры лежит разделение на write- и read- модели, которые используют SQL и NoSql базы данных. Результатом применения архитектуры стало возмо...

Обзор платформ для разработки смарт-контрактов

Для того чтобы разработка смарт-контрактов была эффективной, необходимы знание и понимание разработчиками особенностей блокчейн-платформ. Целью написания статьи являлось проведение обзора текущего состояния платформ смарт-контрактов и их особенностей...

Сетевая синхронизация пользователей на движке Unity

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

Востребованные backend-технологии для разработки программного продукта

В статье авторы определяют востребованные backend-технологии для разработки программного продукта.

Модификация для клиентской части Minecraft: модерирование контента на серверах с большим количеством игроков

В настоящий момент компьютерная игра Minecraft является одной из самых популярных игр не только среди детей, но и среди взрослого поколения за счет огромного числа возможностей для творчества людей. Это привело к образованию серверов, на которых игро...

Похожие статьи

Разработка и внедрение библиотеки валидации на клиентском языке JavaScript

Библиотеки проверки подлинности играют решающую роль в разработке веб-приложений, особенно в обеспечении целостности и безопасности данных. Цель этой статьи — помочь разработчикам в процессе создания пользовательской библиотеки проверки подлинности д...

Эволюция архитектурных стилей при разработке информационных систем: от монолитных приложений к микросервисной архитектуре

Архитектура приложения является краеугольным камнем в разработке программного обеспечения (далее ПО), определяя структуру того, как его основные компоненты взаимодействуют друг с другом. Существуют различные подходы к проектированию архитектуры прило...

Сравнительный анализ библиотек языка PHP для формирования документов веб- сервисами

Задача автоматического создания файлов часто встает перед web- разработчиками, в частности в сфере разработки платформенных решений для транспорта. Для упрощения процесса формирования документов существует несколько библиотек для языка PHP. В статье ...

Контекстно ориентированный фреймворк для «умного города» с точки зрения Cloud, IoT, Big Data

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

Язык программирования Python. Библиотеки Python

Язык программирования Python — это высокоуровневый и интерпретируемый язык программирования, который был создан Гвидо Ван Россумом в 1989 году и выпущен в 1991 году, которые «автоматизируют скучные вещи» (как выразилась одна популярная книга по изуче...

Модификация архитектуры web-приложения, основанной на паттерне CQRS, для повышения производительности

В работе рассматривается способ организации архитектуры web-приложения на основе паттерна CQRS. В основе архитектуры лежит разделение на write- и read- модели, которые используют SQL и NoSql базы данных. Результатом применения архитектуры стало возмо...

Обзор платформ для разработки смарт-контрактов

Для того чтобы разработка смарт-контрактов была эффективной, необходимы знание и понимание разработчиками особенностей блокчейн-платформ. Целью написания статьи являлось проведение обзора текущего состояния платформ смарт-контрактов и их особенностей...

Сетевая синхронизация пользователей на движке Unity

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

Востребованные backend-технологии для разработки программного продукта

В статье авторы определяют востребованные backend-технологии для разработки программного продукта.

Модификация для клиентской части Minecraft: модерирование контента на серверах с большим количеством игроков

В настоящий момент компьютерная игра Minecraft является одной из самых популярных игр не только среди детей, но и среди взрослого поколения за счет огромного числа возможностей для творчества людей. Это привело к образованию серверов, на которых игро...

Задать вопрос