Test Setup
All benchmarks were run on MyRemoteMac dedicated servers under identical conditions:
- M4 Pro: Mac Mini M4 Pro, 14-core CPU / 20-core GPU, 24GB RAM, 512GB SSD
- M4: Mac Mini M4, 10-core CPU / 10-core GPU, 16GB RAM, 256GB SSD
- M2 Pro: Mac Mini M2 Pro, 12-core CPU / 19-core GPU, 16GB RAM, 512GB SSD
- Intel i9: Mac Mini Intel Core i9 (2018), 6-core, 32GB RAM, 512GB SSD
- macOS: Sequoia 15.2, Xcode 16.2, all latest updates
Geekbench 6 Scores
Geekbench 6 measures raw CPU performance. Single-core score indicates responsiveness for everyday tasks and IDE operations. Multi-core score reflects build and compilation performance.
| Chip | Single-Core | Multi-Core | vs Intel i9 |
|---|---|---|---|
| M4 Pro | 3,850 | 22,000 | +129% SC / +168% MC |
| M4 | 3,800 | 15,000 | +126% SC / +83% MC |
| M2 Pro | 2,750 | 14,500 | +64% SC / +77% MC |
| Intel i9 | 1,680 | 8,200 | Baseline |
Key insight: The M4 Pro's multi-core score is 2.68x faster than Intel i9, meaning builds that took 10 minutes on Intel now complete in under 4 minutes. The single-core improvement means Xcode's UI, code completion, and indexing feel dramatically more responsive.
Xcode Build Times
We tested clean builds on a large production iOS project with approximately 500,000 lines of Swift code, 200+ targets, and mixed Swift/Objective-C modules.
| Chip | Clean Build Time | Incremental Build | Time Saved vs Intel |
|---|---|---|---|
| M4 Pro | 4m 12s | 8s | 8m 18s saved (66%) |
| M4 | 5m 45s | 11s | 6m 45s saved (54%) |
| M2 Pro | 7m 15s | 14s | 5m 15s saved (42%) |
| Intel i9 | 12m 30s | 32s | Baseline |
How We Measured
# Clean build measurement xcodebuild clean time xcodebuild -workspace App.xcworkspace \ -scheme App \ -destination 'platform=iOS Simulator,name=iPhone 16' \ build 2>&1 | tail -1 # Incremental build (single file change) touch Sources/App/ContentView.swift time xcodebuild -workspace App.xcworkspace \ -scheme App \ -destination 'platform=iOS Simulator,name=iPhone 16' \ build 2>&1 | tail -1
Swift Package Manager Clean Build
We tested a Swift Package Manager project with 50 dependencies, including large packages like Alamofire, Kingfisher, SnapKit, and Firebase SDK.
| Chip | Dependency Resolution | Clean Build | Total Time |
|---|---|---|---|
| M4 Pro | 12s | 1m 38s | 1m 50s |
| M4 | 14s | 2m 15s | 2m 29s |
| M2 Pro | 15s | 2m 52s | 3m 07s |
| Intel i9 | 28s | 5m 45s | 6m 13s |
# SPM clean build measurement swift package clean time swift build -c release 2>&1 | tail -5 # With parallel jobs (default uses all cores) time swift build -c release -j $(sysctl -n hw.ncpu)
Docker Build Performance
We tested building a production Node.js application Docker image (multi-stage build with npm install, TypeScript compilation, and nginx setup) using Docker Desktop for Mac.
| Chip | Docker Build (no cache) | Docker Build (cached layers) | Image Size |
|---|---|---|---|
| M4 Pro | 42s | 6s | 185MB |
| M4 | 58s | 7s | 185MB |
| M2 Pro | 1m 15s | 8s | 185MB |
| Intel i9 | 2m 38s | 12s | 192MB |
# Docker build benchmark docker system prune -af time docker build --no-cache -t benchmark-app . # Cached rebuild (change only app source, not dependencies) echo "// updated" >> src/index.ts time docker build -t benchmark-app .
LLM Inference Performance
Apple Silicon's unified memory architecture makes it excellent for running large language models locally. We tested inference speed using llama.cpp with Metal acceleration.
| Model | M4 Pro (tok/s) | M4 (tok/s) | M2 Pro (tok/s) | Intel i9 (tok/s) |
|---|---|---|---|---|
| Llama 3 8B (Q4_K_M) | 48.2 | 35.6 | 28.4 | 8.1 |
| Mistral 7B (Q4_K_M) | 52.7 | 38.9 | 31.2 | 9.3 |
| Llama 3 70B (Q4_K_M) | 8.5 | OOM | OOM | OOM |
| CodeLlama 13B (Q4_K_M) | 32.1 | 22.8 | 18.6 | 5.7 |
# Install llama.cpp with Metal support brew install llama.cpp # Run benchmark with Llama 3 8B llama-bench -m llama-3-8b-q4_k_m.gguf -n 512 -ngl 99 # Interactive chat llama-cli -m llama-3-8b-q4_k_m.gguf \ -n 512 -ngl 99 --color \ -p "You are a helpful coding assistant."
Note: The M4 Pro with 24GB unified memory can run models up to ~40B parameters in 4-bit quantization. For the 70B model, you need the 48GB or 64GB configuration. The Intel i9 with 32GB can technically run 7-13B models but at unusable speeds due to lack of Metal GPU acceleration.
SSD Performance
SSD speed directly impacts Xcode indexing, project opening times, Simulator boot, and dependency resolution. We measured sequential read/write speeds using dd and Disk Speed Test.
| Chip | Sequential Read | Sequential Write | Random 4K Read (IOPS) |
|---|---|---|---|
| M4 Pro | 7,400 MB/s | 6,200 MB/s | 1,200K |
| M4 | 6,800 MB/s | 5,100 MB/s | 1,050K |
| M2 Pro | 5,100 MB/s | 4,200 MB/s | 850K |
| Intel i9 | 2,800 MB/s | 2,300 MB/s | 350K |
# Quick SSD benchmark with dd # Write test dd if=/dev/zero of=./testfile bs=1G count=5 2>&1 | tail -1 # Read test (clear cache first) sudo purge dd if=./testfile of=/dev/null bs=1G count=5 2>&1 | tail -1 # Cleanup rm ./testfile
Network Throughput
All MyRemoteMac servers are connected via 10Gbps networking. Here are the real-world transfer speeds we measured.
| Test | Speed | Notes |
|---|---|---|
| iperf3 (local datacenter) | 9.42 Gbps | Near wire speed within datacenter |
| Speedtest (internet) | 8.7 Gbps down / 8.2 Gbps up | To major European peering points |
| git clone (large repo, 2GB) | 14s | From GitHub, limited by GitHub's egress |
| CocoaPods install (50 pods) | 28s | Including git clones and spec resolution |
| Docker pull (1GB image) | 8s | From Docker Hub |
# Network benchmark commands
brew install iperf3
iperf3 -c speedtest-server.example.com -t 30
# Measure git clone speed
time git clone --depth 1 https://github.com/nicklockwood/SwiftFormat.git
# Test download speed
curl -o /dev/null -w "Speed: %{speed_download} bytes/sec\n" \
https://speed.hetzner.de/1GB.bin
Complete Comparison Table
All metrics side by side for easy comparison.
| Metric | M4 Pro | M4 | M2 Pro | Intel i9 |
|---|---|---|---|---|
| Geekbench SC | 3,850 | 3,800 | 2,750 | 1,680 |
| Geekbench MC | 22,000 | 15,000 | 14,500 | 8,200 |
| Xcode Clean Build (500k LOC) | 4m 12s | 5m 45s | 7m 15s | 12m 30s |
| SPM Clean Build | 1m 50s | 2m 29s | 3m 07s | 6m 13s |
| Docker Build (no cache) | 42s | 58s | 1m 15s | 2m 38s |
| Llama 3 8B Inference | 48.2 tok/s | 35.6 tok/s | 28.4 tok/s | 8.1 tok/s |
| SSD Read | 7,400 MB/s | 6,800 MB/s | 5,100 MB/s | 2,800 MB/s |
| SSD Write | 6,200 MB/s | 5,100 MB/s | 4,200 MB/s | 2,300 MB/s |
| Power Consumption | ~45W peak | ~30W peak | ~40W peak | ~120W peak |
What This Means for CI/CD
Faster hardware translates directly into faster CI/CD pipelines, shorter developer feedback loops, and lower costs per build.
Build Pipeline Time Savings
A typical iOS CI pipeline (checkout, build, test, archive) that took 25 minutes on Intel now completes in under 10 minutes on M4 Pro.
# Typical CI pipeline timing (M4 Pro): # git checkout: 5s (vs 15s Intel) # pod install: 28s (vs 1m20s) # xcodebuild: 4m12s (vs 12m30s) # xcodebuild test: 3m15s (vs 8m40s) # archive: 2m30s (vs 6m15s) # Total: ~10m (vs ~29m Intel)
Cost Per Build Comparison
Assuming 100 builds per month at $75/mo for M4, compared to GitHub-hosted macOS runners at $0.08/min.
# MyRemoteMac M4 Pro ($149/mo): # 100 builds x 10min = 1,000 min # Cost per build: $1.49 # GitHub-hosted macOS runner: # 100 builds x 25min = 2,500 min # Cost: 2,500 x $0.08 = $200/mo # Cost per build: $2.00 # Savings: 25% cheaper + 2.5x faster
Developer Productivity Impact
Studies show that build times directly impact developer flow state. A 10-minute build means developers context-switch to other tasks and lose 15-20 minutes in total. A 4-minute build keeps developers in their flow. For a team of 5 developers doing 10 builds/day each, M4 Pro saves approximately 5 hours of cumulative wait time daily compared to Intel i9.
Try It Yourself
Run these benchmarks on your own MyRemoteMac server to see the results firsthand.
# Quick benchmark script for your MyRemoteMac server
#!/bin/bash
echo "=== System Info ==="
sysctl -n machdep.cpu.brand_string
sw_vers
echo ""
echo "=== Geekbench 6 ==="
echo "Download from: https://www.geekbench.com/download/"
echo ""
echo "=== SSD Benchmark ==="
echo "Write speed:"
dd if=/dev/zero of=./benchfile bs=1G count=2 2>&1 | tail -1
echo "Read speed:"
sudo purge 2>/dev/null
dd if=./benchfile of=/dev/null bs=1G count=2 2>&1 | tail -1
rm -f ./benchfile
echo ""
echo "=== Network Speed ==="
curl -o /dev/null -w "Download speed: %{speed_download} bytes/sec\n" \
https://speed.hetzner.de/100MB.bin 2>/dev/null
echo ""
echo "=== Xcode Version ==="
xcodebuild -version
echo ""
echo "Done! Compare your results with the benchmarks at"
echo "https://myremotemac.com/guides/mac-mini-m4-pro-benchmarks.html"