← блог

Mac mini на M6 против hosted macOS-раннера GitHub: бенчмарк сборки Xcode

24 сентября 2026 г. · 7 мин чтения

Нам нужна была реальная цифра для одного вопроса. Насколько выделенный Mac mini на M6 быстрее стандартного hosted macOS-раннера GitHub на настоящем iOS-приложении? Мы собрали на обоих открытое iOS-приложение Wikipedia, с тем же Xcode и тем же скриптом, по три раза.

Этот пост заменяет наш прежний бенчмарк на M4. Все цифры здесь получены в запусках 24 сентября 2026 года.

Результаты

Median of 3 runs, in seconds. Lower is better.

                      GitHub-hosted   MacRun M6   change
                      macos-26
package download            43            39       -8%
clean build                183            86      -53%
incremental build           21            10      -51%
no-op build                 20            10      -50%
220 unit tests              44            17      -61%

M6 компилировал примерно вдвое быстрее. Загрузка пакетов шла почти одинаково, потому что обе машины тянут одни и те же пакеты с GitHub по быстрым каналам. Каждый шаг завершился успешно на обеих машинах во всех запусках.

Сколько времени занимает обычная CI-задача

Таблица сравнивает машины шаг за шагом. Настоящая CI-задача выглядит на них по-разному. Hosted-раннер начинает каждую задачу пустым. Ему нужно скачать пакеты, собрать всё с нуля и потом прогнать тесты. Выделенный Mac хранит папку сборки. После небольшого изменения он пересобирает только то, что изменилось.

Именно эту разницу чувствует команда. Задача, которая шла четыре с половиной минуты, заканчивается меньше чем за тридцать секунд. В насыщенный день с кучей пушей сэкономленные минуты складываются в часы.

На hosted-раннере та же задача стоит денег. GitHub округляет каждую задачу вверх до минуты, поэтому 269 секунд оплачиваются как 5 минут. При $0.062 за минуту это около 31 цента за задачу. На выделенном Mac она ничего не стоит сверх абонентской платы. Наш калькулятор стоимости переводит ваше число задач в месячную сумму.

Две машины

Характеристики железа взяты у самих машин. Каждый запуск перед сборкой выводил чип, число ядер и объём памяти. GitHub продаёт и более крупные macOS-раннеры по более высокой поминутной цене. Мы тестировали стандартный, потому что им пользуется большинство команд.

Методика

  • Проект: wikimedia/wikipedia-ios на коммите 8691a89, сборка под iOS Simulator со схемой Wikipedia и Swift-пакетами.
  • Симулятор: новый iPhone 17 на iOS 26.5, созданный одинаково на обеих машинах.
  • Каждый запуск начинается с удаления кэша пакетов и DerivedData. Подпись выключена, как обычно бывает в CI-сборках под симулятор.
  • Загрузка пакетов: xcodebuild -resolvePackageDependencies в пустую папку.
  • Чистая сборка: xcodebuild build-for-testing с пустой DerivedData и уже скачанными пакетами.
  • Инкрементальная сборка: та же команда после добавления одной строки комментария в один Swift-файл приложения.
  • Пустая сборка: та же команда ещё раз, без изменений.
  • Тесты: 220 юнит-тестов из пакета WMFData приложения, запуск через test-without-building на загруженном симуляторе.
  • По три полных запуска на каждой машине. Мы приводим медиану.

Оговорки

Мы запускали тесты пакета, а не основной тестовый таргет приложения. Основному таргету нужны подписанные entitlements для app group, а у неподписанной CI-сборки их нет. Его тестовый хост постоянно перезапускался на обеих машинах, так что честного замера не вышло.

Инкрементальная сборка затрагивала один небольшой файл. Большая часть её 10 секунд уходит на то, что Xcode планирует сборку. Поэтому она совпадает с пустой сборкой. Изменение в часто используемом файле заняло бы больше времени на обеих машинах.

На машинах стояли разные версии macOS, потому что каждая работала на том, что сегодня поставляет её владелец. Hosted-задача может кэшировать Swift-пакеты через actions/cache. Это сократило бы шаг загрузки. Но чистую сборку, которая занимает большую часть времени, это не убрало бы.

Мы продаём раннер на M6, так что оценивайте наши цифры с учётом этого. Методика выше достаточно полная, чтобы повторить её на своём проекте. Только такой бенчмарк для вас по-настоящему важен.

Вопросы

На каком железе работает стандартный раннер GitHub с macOS 26?
В наших запусках раннер macos-26 показывал Apple M2 Pro (Virtual) с 5 ядрами CPU и 14 GB памяти. Это виртуальная машина, и каждая задача стартует с нуля.
Насколько Mac mini на M6 быстрее в сборках Xcode?
В нашем бенчмарке чистая сборка iOS-приложения Wikipedia заняла в медиане 86 секунд на выделенном M6 mini и 183 секунды на стандартном раннере GitHub с macOS 26. Это на 53 процента быстрее. Инкрементальные сборки и юнит-тесты были быстрее на 50 и 61 процент.
Почему выделенный раннер настолько быстрее в повседневных CI-задачах?
В основном потому, что он хранит результаты сборки между задачами. Hosted-раннер начинает каждую задачу пустым, поэтому каждый раз качает пакеты и делает чистую сборку. Выделенный Mac пересобирает только то, что изменилось.
Можно ли повторить этот бенчмарк?
Да. В разделе о методике указаны проект, зафиксированный коммит, сборка Xcode и точные шаги xcodebuild. Любой, у кого есть Mac и GitHub Actions, может пройти те же шаги.

Посчитайте свои цифры в калькуляторе или арендуйте раннер.