Что из этого имеет более быстрое время сборки Flutter: M1 Mini, Mac Pro и Mac Mini

Что из этого имеет более быстрое время сборки Flutter: M1 Mini, Mac Pro и Mac Mini

31 мая 2022 г.

TL;DR: Машины M1 удивительно быстры! Для сборок iOS (с кэшированием) мы наблюдаем улучшение времени сборки на \~50% по сравнению с Mac Pro.


CI/CD с машинами M1


В ноябре 2020 года Apple выпустила MacBook M1, а год спустя — чипы M1 Pro/Max. С тех пор мы все читали и слышали от других людей о сумасшедших улучшениях производительности. Возможно, вы уже читали [твит] (https://twitter.com/softwarejameson/status/1455971162060697613) Джеймсона Уильямса (штатного инженера-программиста Reddit):



Мы знаем, что машины M1 работают быстро, но должны ли мы использовать их в CI/CD, чтобы ускорить конвейер? Чтобы ответить на этот вопрос, мы сравнили M1 mini, Mac Pro и Mac mini по производительности. Сборки iOS и macOS с помощью Codemagic.


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


Настройка сравнения


Давайте поговорим о настройке этого сравнения и рассмотрим такие вопросы, как:


  • Какие приложения использовались для сборки?

  • Какие платформы?

  • Режим выпуска, отладки или профилирования?

Программы


Чтобы сравнить сборки приложений Flutter, мы использовали два приложения:


  • Приложение счетчика по умолчанию для Flutter


Для сравнения, мы уделяем больше внимания приложению Sharezone, потому что Sharezone — это реально работающее приложение с +300 000 зарегистрированных пользователей. Он использует кучу зависимостей, как и многие пакеты Firebase и несколько других (Sharezone с открытым исходным кодом — вы можете найти все зависимости здесь). Таким образом, вы увидите очень реалистичное время сборки.


Платформы


Мы сосредоточены на следующем:


  • iOS

  • макОС

  • Тесты (юниты и тесты виджетов)

Система


Для теста мы используем виртуальные машины Codemagic, которые вы можете использовать для CI/CD. Эти машины имеют следующую конфигурацию:


  • Mac Mini: 2,3 ГГц, четырехъядерный / 8 ГБ

  • Mac Pro: 3,7 ГГц, четырехъядерный / 32 ГБ

  • M1 Mini: 3,2 четырехъядерный процессор / 8 ГБ

Конфигурация флаттера


:::Информация


Мы использовали версию Flutter 2.10.5.


Чтобы получить более реалистичный вид, все сборки используют [режим выпуска] (https://docs.flutter.dev/testing/build-modes#release) Flutter.


Для тестов мы просто использовали команду «flutter test».


Кэширование зависимостей


Мы сравнили сборки без и с кеширования. Для кэширования мы кэшировали следующие пути:


  • Кэш дротика: $FLUTTER_ROOT/.pub-cache

  • Кэш CocoaPods: HOME/Library/Caches/CocoaPods

Для получения дополнительной информации о том, как использовать кэширование в Codemagic, просто взгляните на документацию по [кэшированию зависимостей] (https://docs.codemagic.io/flutter-configuration/dependency-caching/).


Точность


Мы запускали каждую сборку три раза и вычисляли среднее значение. Например, более поздняя сборка приложения iOS Counter — это среднее время трех сборок.


Всего мы запустили 54 сборки. Вы также можете взглянуть на эту электронную таблицу, которая показывает все необработанные данные и ссылки на сборки.


Результаты сравнения M1 Mini, Mac Pro и Mac Mini


Мы подходим к центральной части этой статьи: результатам. Вы увидите, насколько велика разница во времени сборки между приложениями Counter и Sharezone. Поэтому важно использовать реальное приложение для подобных сравнений.


Все время сборки измеряется в секундах.


Результаты приложения счетчика



| Платформа | Мак мини | Мак Про | М1 мини |


| iOS | 92 | 75 | 30 |


| макОС | 89 | 51 | 25 |


Результаты приложения Sharezone


iOS



| Кэширование | Мак мини | Мак Про | М1 мини |


| Нет | 967 | 658 | 395 |


| Да | 967 | 658 | 395 |


Результаты невероятные! Машины M1 сокращают время сборки (с кэшированием) на 68% по сравнению с Mac mini и на 53% по сравнению с Mac Pro.


macOS



| Кэширование | Мак мини | Мак Про | М1 мини |


| Нет | 479 | 466 | 433 |


| Да | 501 | 401 | 333 |


В macOS мы не видим столь значительных улучшений по сравнению со сборками iOS, но сборки M1 (с кэшированием) по-прежнему на 34% быстрее, чем сборки Mac mini, и на 17% быстрее, чем сборки Mac Pro.


Модульные тесты и тесты виджетов



| Мак мини | Мак Про | М1 мини |


| 84 | 90 | 95 |


Сравнивая машины с точки зрения юнит-тестов и тестов виджетов, мы почти не видим между ними различий.


:::Информация


В Sharezone есть 238 модульных тестов и тестов виджетов.


Общий



Резюме


Подводя итоги: машины M1 почти на 50% быстрее, чем машины Mac Pro, и их результаты особенно интересны, когда речь идет об интеграционных тестах. Мы все знаем, что медленные конвейеры CI — это отстой.


Однако машины M1 не только сократят время сборки ваших интеграционных тестов, но и помогут вам опубликовать свои приложения в App Store или Play Store.


Начните работу с машинами Codemagic и M1!


Также опубликовано [здесь] (https://blog.codemagic.io/flutter-m1-vm-comparison/) Нильсом Райхардтом, соучредителем Sharezone.



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE