Apple announced their new MacBooks with M4 processors. I picked up a new MacBook Pro 14” with an M4 Max processor to replace my 2021 MacBook Pro with an M1 Pro. I’ve been using the M1 Pro for a few year now and it’s been great, but I’m excited to see what the M4 Max can do. To that end, I ran some benchmarks to compare the new M4 Max to the M1 Pro and M2.

I won’t post Geekbench scores, as they’re not a great indicator of real-world performance and there are plenty of results in their database. Instead, I’ll focus on Xcode build times and some other real-world tasks.

Xcode Build Times

I relied on XcodeBenchmark to measure build times. I followed the instructions in the README and ran the benchmark on each machine three times to get an average. The project is made up of almost 1 million lines of mixed code, including Swift, Objective-C, C, and C++. Including 76 popular libraries and frameworks, such as Alamofire, Realm, and Firebase.

Overview

Apple’s M processors are designed with a combination of performance and efficiency cores to optimize both power and energy consumption. The performance cores are designed to handle demanding tasks and provide maximum computational power, while the efficiency cores are optimized for less intensive tasks, ensuring longer battery life and reduced energy usage. For example, the M1 Pro features 8 performance cores and 2 efficiency cores, whereas the M4 Max includes 12 performance cores and 4 efficiency cores, providing a significant boost in performance for more demanding applications.

The more performance cores a processor has, the faster it can handle complex tasks, such as compiling large codebases in Xcode. The M4 Max’s additional performance cores should result in faster build times compared to the M1 Pro and M2.

Results

All tests were run on Xcode 16.1 and macOS 15.1. The latest versions at the time of testing.

DeviceCPU (P = Performance/E = Efficiency)RAMSSDTime
Mac Mini 2023M2 - 8 (4P and 4E)24GB1TB199.226s
MacBook Pro 14” 2021M1 Pro - 10C (8P and 2E)16GB1TB162.375s
MacBook Pro 16” 2021M1 Max (8P and 2E)32GB1TB149.227s
MacBook Pro 14” 2024M4 Max - 16C (12P and 4E)48GB1TB85.054s

Xcode Benchmark Results

The M1 Pro lives up to it’s name, providing a significant performance boost over the M2. The M4 Max is even faster, with build times almost half that of the M1 Pro. Compared to M1 Max, the M4 Max is 57% faster. The additional performance cores in the M4 Max make a noticeable difference in Xcode build times, especially for large projects like this one.

In the past with Intel Macs, Xcode compiling was a bottleneck for me that would bring my machine to it’s knees. Now though, with any Apple Silicon Mac, it’s a breeze. The M4 Max is no exception.

LLVM

I also ran some LLVM benchmarks using the time brew install llvm --head. I ran the benchmark on each machine three times to get an average. LLVM is used by many languages and compilers, including Clang and Swift.

This is a really slow benchmark, so I only ran it on the M1 Pro and M4 Max.

A benchmark using LLVM

DeviceRealUserSys
M4 Max21.56m224.62m27.65m
M1 Pro40.09m261.68m35.06m

The time command consists of three timings, the real time, user time, and system time. The real time is the actual time it takes to run the command, the user time is the amount of CPU time spent in user mode, and the system time is the amount of CPU time spent in system mode. 1

The M4 Max is significantly faster than the M1 Pro in this benchmark, with a real time of 21.56 minutes compared to 40.09 minutes. The M4 Max also has a lower user time and system time, indicating that it is more efficient at compiling code.

Conclusion

The M4 Max is a significant upgrade over the M1 Pro and M2, with faster Xcode build times and improved performance in LLVM benchmarks. The additional performance cores in the M4 Max make a noticeable difference in demanding tasks, such as compiling large codebases and running complex benchmarks. If you’re a developer or power user looking for the best performance, the M4 Max is a great choice.

I can’t say that I am compiling LLVM ever, but it is a good benchmark to stress the processor and see how it performs. The M4 Max is a beast.

Footnotes

  1. Think of the user time as the time spent executing code in the program across all cores, and the system time as the time spent executing code in the kernel. The real time is the sum of the user and system times, plus any time spent waiting for I/O or other resources over all cores.