Что из этого имеет более быстрое время сборки 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, потому что 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.
Оригинал