Mac mini M6 vs M4 vs M5 Pro: how we benchmark them, and what it means for your builds
Apple's new Mac mini line reaches our racks at the end of September. Instead of reposting spec-sheet multipliers, we run the same build, test, transcode and inference workloads on all three machines in the datacenter — on the same macOS build, at rack temperature, with power measured at the PDU. This page describes exactly how, and is where the numbers appear.
We ship from end of September.
The three machines under test
One config per chip, deliberately close in memory and storage so the chip is the variable. The M4 is our current production baseline, so its behaviour under real customer load is already known — the two new machines are measured against it.
Mac mini M4 (baseline)
Mac mini M6
Mac mini M5 Pro
Results
Empty on purpose: we do not publish numbers we have not measured. The table fills in the week the machines ship (end of September), once the machines are racked and the runs are signed off.
| Test | Apple M4 | Apple M6 | Apple M5 Pro | Better |
|---|---|---|---|---|
| Xcode clean buildCold `xcodebuild` of a mid-size Swift app (≈120k LOC, no cache). | Pending | Pending | Pending | Lower |
| Xcode incremental buildSingle-file change rebuild — the loop a CI runner spends its day in. | Pending | Pending | Pending | Lower |
| Unit + UI test suiteFull `xcodebuild test` run on an iOS simulator. | Pending | Pending | Pending | Lower |
| Parallel CI runners before slowdownHow many concurrent build agents fit before per-build time degrades >20%. | Pending | Pending | Pending | Higher |
| Video transcode (H.265)4K → 1080p H.265 hardware encode, a common render-farm task. | Pending | Pending | Pending | Lower |
| Local LLM throughputOn-device inference throughput for local AI workloads. | Pending | Pending | Pending | Higher |
| Sustained SSD writeLarge sequential write — matters for caches and artifact storage. | Pending | Pending | Pending | Higher |
| Idle power drawMeasured at the APC PDU — what you actually pay for in a rack. | Pending | Pending | Pending | Lower |
| Power draw under sustained build loadFull-load draw during a continuous build loop. | Pending | Pending | Pending | Lower |
No test has been run yet on the new machines. Want the numbers the moment they land? Ask us to send them.
How each test is run
Xcode clean build(seconds, lower is better)
xcodebuild -scheme Release -destination "generic/platform=iOS" clean build, 5 runs, median reported. Derived data wiped between runs.
Xcode incremental build(seconds, lower is better)
One-line change in a leaf module, 10 runs, median reported.
Unit + UI test suite(seconds, lower is better)
xcodebuild test on a single booted simulator, 3 runs, median reported.
Parallel CI runners before slowdown(runners, higher is better)
Add one runner at a time; record the last count meeting the <20% degradation bar.
Video transcode (H.265)(seconds, lower is better)
ffmpeg with VideoToolbox, fixed 3-minute 4K source, 3 runs, median reported.
Local LLM throughput(tokens/sec, higher is better)
llama.cpp Metal backend, 7B model Q4_K_M, 512-token prompt, 3 runs, median reported.
Sustained SSD write(MB/s, higher is better)
64 GB sequential write with fio, steady-state value reported.
Idle power draw(watts, lower is better)
APC PDU per-outlet reading, 30-minute idle average after boot settle.
Power draw under sustained build load(watts, lower is better)
APC PDU per-outlet reading, 30-minute average during a looping clean build.
Our benchmarking rules
- Every machine is a stock, single-tenant unit from our own racks — not a loaner, not a laptop on a desk.
- Same macOS build (macOS Tahoe 26), same Xcode version, same project revision on all three machines.
- Machines run in the rack at datacenter ambient temperature, so results reflect sustained load rather than a short desktop burst.
- Medians of repeated runs, never a single best-case run. Run counts are listed per test.
- Power is read from the APC PDU outlet the machine is plugged into, not estimated from spec sheets.
- We publish the raw runs alongside the summary table, including results that make our own upsell look worse.
- If a test cannot be run reliably, it is marked "not measured" and left out of the comparison rather than guessed.
Why we measure power, not just speed
A hosted Mac lives in a rack for years. Two machines with the same build time but different sustained draw are not the same product: one costs more to run and emits more, which is why we read power at the PDU outlet and publish it next to the performance numbers. It is also the honest way to answer "should I move from M4 to M6?" — sometimes the answer is that your workload will not notice, and we would rather say that than sell you a bigger machine.