Featured image of post Сравнение MacBook M1 Pro и M4 Pro глазами разработчика

Сравнение MacBook M1 Pro и M4 Pro глазами разработчика

Сравнил MacBook M1 Pro и M4 Pro с упором на задачи разработчика: сборка проектов, тесты, AI и рендеринг. Цифры, реальные проекты и вывод — стоит ли апгрейд?

При обновлении MacBook на новое поколение решил сделать тесты в разрезе работы разработчика. Думаю это позволит понять, пора ли обновляться или насколько четвертое поколение стало лучше самого первого релиза чипом Apple Silicon, которые M.

Различие в железе

Начнем с простого перечисления технических характеристик, которые изменились:

СвойствоMacBook M1 ProMacBook M4 Pro
Процессор6 произв + 2 энергоэфф10 произв + 4 энергоэфф
GPU14 ядер20 ядер
Шина памяти200 ГБ/с273 ГБ/с
Neural Engineдо 11 TOPSдо 38 TOPS
Аппаратное ускорениеH.264, HEVC, ProRes и ProRes RAWВсе, что в M1 + AV1 + x2 ProRes
Thunderboltверсия 4, 40 Гб/cверсия 5, 120 Гб/c
Bluetooth5.05.3
Wi-Fi6, до 1,146 Гб/c6E, до 1,788 Гб/c
Камера~2,1 МП12 МП Center Stage
SSD, чтение5109 Мб/c7715 Мб/c
SSD, запись3570 Мб/c5107 Мб/с
Картридер, чтение148,4 Мб/с152,2 Мб/с
Картридер, запись89,3 Мб/с90,2 Мб/c

Тест SSD и Картридера производился через BlackMagic Disk Speed Test. Карточка SD Transcend UHS-I(SD 3.0) с заявленным 125 Мб/c на запись и 160 Мб/с на чтение. Выглядит так, что картридер не изменился, но это неточно.

Что из этого для меня оказалось заметным и важным:

  • Разница в производительности CPU и GPU
  • Камера стало с более качественной картинкой и появился режим В центре кадра
  • Поддержка кодека AV1 и больше кодеров/декодеров ProRes – производительность рендера видео заметно подросла. Хотя соглашусь, это больше к разнице производительности процессоров.

🧐 Версия Thunderbolt 5 это хорошо, но пока доступных устройств, например, SSD с такой скорость сложно найти, а если и есть, то достаточно дороги.

🧐 Wi-Fi 6 сама по себе уже очень быстрый. Если у вас есть Wi-Fi с более 1 Гб/c, в этом случае может версия 6E даст какие-то преимущества. Для меня разницы нет с каналом 500 Гб/c.

🧐 Изменении версии Bluetooth не заметно. Да, стало энергоэффективнее и более надежное соединение, но и до этого с наушниками 5.3 проблем не было.

Как проводились тесты

Каждый тест представляет собой компиляцию проекта и прохождения тестов. Запуск производился 5 раз и вычислялось среднее время каждого прохождения.

Предварительно для каждого проекта были закачены зависимости в кэш Gradle/Maven/npm.

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

Все тесты запускались при выборе Максимальная мощность в настройках Аккумелятора, были подключены к сетевому питанию и были заряжены на 100%.

1 - spring-boot-realworld-example-app

https://github.com/gothinkster/spring-boot-realworld-example-app

Небольшой Spring Boot проект. Требует Java 11 версии, для тестов использовалась версия openjdk 11.0.26.

Получить репозиторий и нужный коммит:

git clone https://github.com/gothinkster/spring-boot-realworld-example-app.git project1
cd project1
git checkout ee17e31

Перед запуском сборки надо инициализировать проект

./gradlew :spotlessApply

Запуск сборки с учетом времени выполнения команды. Первый раз будет долгий запуск, так будут скачиваться все зависимости:

time ./gradlew clean build

Запуск приложения, сборка проекта уже выполнена.

time ./gradlew bootRun

Результаты

КомандаMacBook M1 ProMacBook M4 ProРазница (%)
clean build, с15,547,91−49,1%
bootRun, с5,053,40−32,7%

2 - Traccar - OS GPS Tracking

https://github.com/traccar/traccar

Приложение для GPS трекинга с открытым исходным кодом.

git clone --recursive https://github.com/traccar/traccar.git
git checkout 5d829b46a

Сборка JAR серверной части и тесты, использовалась openjdk 24+37

./gradlew clean assemble

./gradlew clean test

Сборка Web UI:

npm run build

Результаты

КомандаMacBook M1 ProMacBook M4 ProРазница (%)
assemble, с8,955,63-37%
test, с12,608,33-33%
npm run build, с7,474,45-40%

5 - Рабочий проект

Один из микросервисов над которым сейчас работаю, исходный код предоставить не могу. Взял не очень большой проект, чтобы сделать больше прогонов.

Общие характеристики:

  • Java 17
  • Spring Boot 3.2
  • Maven
  • Количество строк кода без комментов и пустых строк: 43 967
  • Количество тестов: 923

Запуск компиляции:

time ./mvnw clean compile

time ./mvnw clean test

Результаты

КомандаMacBook M1 ProMacBook M4 ProРазница (%)
compile, с12,537,56-39%
test, с29,7923,62-21%

В тестах много интеграционных тестов с Testcontainers и выглядит так, что работа с Docker и «сетевое» взаимодействие является бутылочным горлышком и уже не дает большого преимущества. Для пробы взял еще проект в котором около 1000 тестов ситуация повторилась: M1 Pro 2мин 11с и M4 Pro 1мин 30с, разница -31%. В этом проекте большинство тестов – юнит.

6 - Просто JS проект

Создал пустой проект

npx create-react-app test-build-speed
cd test-build-speed
npm install ajv@8 ajv-keywords@5
time npm run build

Результаты

КомандаMacBook M1 ProMacBook M4 ProРазница (%)
build, с4,801,95-59%

7 - Локальный AI

Использовал:

  • LM Studio 0.3.18
  • Модель Gemma 3 12B 4bit

Модель выбрана так, чтобы поместится в память M1 Pro с 16Гб ОЗУ.

1. Запрос генерации простого кода

Напиши Pojo класс являющимся Value Object. Напиши классы для веса, валюты. Используй Java 17.

M1 Pro

  • 16.23 токенов/сек
  • 1.30 сек. до первого токена

M4 Pro

  • 32.03 токенов/сек
  • 0.33s сек. до первого токена

1.2 Добавлено уточнение

А можешь использовать record

M1 Pro

  • 17.07 токенов/сек
  • 21.40 сек. до первого токена

M4 Pro

  • 31.59 токенов/сек
  • 5.90 сек. до первого токена

2. Проанализируй изображение

Изображения для анализа

Что изображено на изображении?

M1 Pro

  • 18.24 токенов/сек
  • 6.61 сек. до первого токена

M4 Pro

  • 33.10 токенов/сек
  • 2.21 сек. до первого токена

3. Анализ PDF файла

Был выбран файл и запросы суммаризации по нему:

  • 5 основых идей
  • Опиши общую концепцию предложенную в файле

Использовался файл-спецификация JSR-133.

M1 Pro

  • 17.35 токенов/сек
  • 9.73 сек. до первого токена

M4 Pro

  • 31.95 токенов/сек
  • 2.78 сек. до первого токена

8 – Конвертация видео

Использовался сценарий, при котором записана встреча в Контур Толке и после конвертирована для хранения или публикации.

Видео в h.264 из созвона длительностью 1:15:56 и сконвертировал для YouTube 1080p30. Использовал Handbrake 1.9.2

MacBook M1 ProMacBook M4 ProРазница (%)
7м 40с3м 15с-57%

Увеличение количество аппаратных декодера с 1 до 2 дает о себе знать. Обработка более чем в 2 раза быстрее.

9 – Синтетика Cinebench 2024.1.0

Прогнал синтетические тесты, которые максимально могут показать разницу в потенциале процессоров и GPU.

ТестMacBook M1 ProMacBook M4 ProРазница (%)
GPU, pts2 2569 147+305%
CPU Single, pts112172+54%
CPU Multi, pts6301501+138%

10 – Синтетика Geekbench

Использовалась версия 6.4.0

ТестMacBook M1 ProMacBook M4 ProРазница (%)
Single-Core Score2 3063 891+68%
Multi-Core Score9 37122 495+140%

Вывод

Если вы разработчик и у вас появляются мысли «А может обновиться?»

✅ Обновлятся, если:

  • Вы работаете с реально большими проектами и часто собираете локально, запускаете и выполнятете тесты. Тогда эффективный прирост будет более заметен. Сократится сборка на 30 – 50%.
  • Вы хотите постоянно использовать локальные LLM.
  • Вы не только пишите код, но и работаете с видео или фото. Тут прирост особенно заметен.

🛑 M1 все еще хорош, если:

  • Вы больше времени проводите в IDE и чаще прогоны отдаете в CI/CD. Например, если локально проводить сложно или требует сложной подготовки.
  • Не работаете с медиаконтентом, AI, не часто собираете контейнеры.
  • Нет долгих и ресурсоемких операций. Без них, на коротких дистанциях разницы между мощностью процессоров непросто ощутить.

💡По мне, вопрос по обновлению MacBook у разработчика встает не в разрезе «Мне не хватает мощности!», а в разрезе «Мне не хватает оперативной памяти!». И вот мои 16Гб из 2022 года уже не хватало в 2025, так что надеюсь 48Гб хватит на долгое время.

Создано при помощи Hugo
Тема Stack, дизайн Jimmy