Benchmarks
    Results land the week the machines ship (end of September)

    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)

    In rack
    Apple M4
    10-core CPU
    10-core GPU
    16 GB unified memory
    512 GB SSD

    Mac mini M6

    At launch
    Apple M6
    12-core CPU
    12-core GPU
    16 GB unified memory
    512 GB SSD

    Mac mini M5 Pro

    At launch
    Apple M5 Pro
    15-core CPU
    20-core GPU
    24 GB unified memory
    512 GB SSD

    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.

    Benchmark results for Mac mini M4, M6 and M5 Pro across build, render, inference and power tests
    TestApple M4Apple M6Apple M5 ProBetter
    Xcode clean buildCold `xcodebuild` of a mid-size Swift app (≈120k LOC, no cache).PendingPendingPendingLower
    Xcode incremental buildSingle-file change rebuild — the loop a CI runner spends its day in.PendingPendingPendingLower
    Unit + UI test suiteFull `xcodebuild test` run on an iOS simulator.PendingPendingPendingLower
    Parallel CI runners before slowdownHow many concurrent build agents fit before per-build time degrades >20%.PendingPendingPendingHigher
    Video transcode (H.265)4K → 1080p H.265 hardware encode, a common render-farm task.PendingPendingPendingLower
    Local LLM throughputOn-device inference throughput for local AI workloads.PendingPendingPendingHigher
    Sustained SSD writeLarge sequential write — matters for caches and artifact storage.PendingPendingPendingHigher
    Idle power drawMeasured at the APC PDU — what you actually pay for in a rack.PendingPendingPendingLower
    Power draw under sustained build loadFull-load draw during a continuous build loop.PendingPendingPendingLower

    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.