Мы создали два приложения SPA для сравнения производительности: Blazor WASM и React.
Оба приложения имеют одинаковый макет:
- Элемент управления вкладками с двумя вкладками в нем
- Вкладки имеют 93 элемента управления формой и 2 сетки данных.
- В одной из сеток данных есть настраиваемые строки шаблонов с 10 элементами управления формы в каждой строке.
- Все элементы управления вводом имеют проверку ввода.
- Все элементы управления имеют двустороннюю привязку данных. React использует «useEffect», Blazor использует «@bind».
- Оба проекта используют UI-фреймворк. React использует MUI, Blazor использует MudBlazor.
Размеры файлов
Blazor WASM
Мы пробовали две сборки: стандартную и опережающую. Мы использовали профиль Release.
Версия .NET — это .NET 8 Preview 6.
Размещено в IIS.
Стандартная сборка, без сжатия
Стандартная сборка с включенной комиссией Brotli
Использование сжатия Brotli позволило сэкономить 64% от общего размера файла.
Опережающая сборка, без сжатия
Общий размер сборки AOT на 112 % больше, чем сборка по умолчанию.
Упреждающая сборка со сжатием Brotli
Реагировать
Самый маленький Blazor (стандартная сборка с Brotli) в 3 раза больше React без сжатия.
Производительность
Для производительности мы использовали Lighthouse. Мы протестировали две вещи: навигацию (загрузка страницы) и интервал времени. Для Timespand мы выполнили некоторые базовые взаимодействия со страницами в обоих приложениях.
Блейзор ВАСМ
Навигация (Page Load) — стандартная сборка, без сжатия
Навигация (загрузка страницы) — стандартная сборка, сжатие Brotli
Навигация (загрузка страницы) — предварительная сборка, без сжатия
Навигация (загрузка страницы) — предварительная сборка со сборкой Brotli
Timespan — стандартная сборка, без сжатия
Реагировать
Навигация (загрузка страницы)
React в 2,2 раза быстрее.
Промежуток времени
React в 1,8 раза быстрее.