Angular IVY Perfomance

Kliment Ru
Angular Soviet
Published in
2 min readJan 22, 2019

На данный момент IVY Renderer находится в разработке, поэтому данное исследование носит предварительный характер, и со временем показатели будут меняться.

Параметры

Angular 7.2.1

TypeScript 3.1.6 (с версией 3.2.2 у IVY возникли проблемы)

Angular CLI 7.2.1

Режим ng serve --prod --aot

Методика испытаний

Производился рендер 11000 случайных чисел, которые передавались в компонент в цикле ngFor. Был замерен интервал между срабатываниями хуков компонента OnInit и AfterViewInit. Данные добавлялись в глобальный массив, и в AfterViewInit родительского компонента вычислялось среднее арифметическое значение.

Как запустить приложение с IVY

  • Выполнить в консоли node_modules/.bin/ivy-ngcc для пересборки модулей Angular в совместимый c IVY формат;
  • В tsconfig.app.json добавить “enableIvy”: “ngtsc”
  • Заменить содержимое main.ts на следующее:
  • Из app.module.ts удалить BrowserModule, т.к. он не нужен;
  • Удалить из angular.json строчку polyfills, т.к. zone теперь не нужен.

Более подробно про IVY можно почитать в статье Angular Ivy Renderer готовность 93%

Размер бандла

Текущий движок Renderer 2 (View Engine)

Новый движок Renderer 3 (IVY)

Размер сборки с IVY меньше примерно на 160 кб.

Производительность

Скорость рендеринга величина не постоянная, поэтому были взяты выборки из 5 результатов.

Текущий движок Renderer 2 (View Engine)

Новый движок Renderer 3 (IVY)

Средняя скорость отрисовки текущего движка примерно 361 ms, а IVY - 592 ms.

Выводы

Несмотря на то что IVY показал большее время отрисовки, уменьшение размера бандла не может не радовать. И учитывая что работы еще ведутся, стоит ожидать улучшения производительности.

Ссылки

Тестовое приложение с Renderer 2

Тестовое приложение с IVY(как запустить написано выше)

--

--