RunsOn m8azn.xlarge · gp3 1000 MiB/s vs Namespace 4x16 x64
RunsOn does each build for 1.5× less; on time, Namespace is faster on the Rust and Docker builds and tied on the TypeScript build. Both 4 vCPU x64.
All three builds 1.5× cheaper on RunsOn: $0.0645 vs $0.0966Namespace 1.3× faster: 7m 26s vs 9m 21s
Rust build 1.5× cheaper on RunsOn: $0.0136 vs $0.0208Namespace 1.2× faster: 1m 38s vs 1m 54s
TypeScript build 1.5× cheaper on RunsOn: $0.0072 vs $0.0108about the same time: 45s · 47s
Docker build 1.5× cheaper on RunsOn: $0.0437 vs $0.0650Namespace 1.3× faster: 5m 01s vs 6m 42s
RunsOn m8azn.xlarge · gp3 1000 MiB/s
jobs ran from Amazon.com (US)
Namespace 4x16
jobs ran from Namespace Labs (US)
Side by side
Every measurement both runners share, cost first. The dot marks the better value; gap is the larger over the smaller.
| Measurement | RunsOn | Namespace | Gap |
|---|---|---|---|
| Cost | |||
| Cost per Rust build | $0.0136 | $0.0208 | 1.5× RunsOn |
| Cost per TypeScript build | $0.0072 | $0.0108 | 1.5× RunsOn |
| Cost per Docker build | $0.0437 | $0.0650 | 1.5× RunsOn |
| Price per minute | $0.0047 | $0.0120 overage rate | 2.5× RunsOn |
| Real builds, wall time | |||
| Rust build (spotify-player) | 1m 54s | 1m 38s | 1.2× Namespace |
| TypeScript build (opencode) | 45s | 47s | ≈ even |
| Docker build (PostHog) | 6m 42s | 5m 01s | 1.3× Namespace |
| CPU & memory | |||
| PassMark single-thread (points) | 4,257 | 4,700 | 1.1× Namespace |
| PassMark CPU Mark, all cores (points) | 15,102 | 16,176 | 1.1× Namespace |
| sysbench CPU, 1 thread (events/s) | 6,220 | 7,051 | 1.1× Namespace |
| 7-Zip compression (MIPS) | 31,030 | 33,428 | 1.1× Namespace |
| Memory read bandwidth | 40.8 GiB/s | 44.8 GiB/s | 1.1× Namespace |
| Measurement | RunsOn | Namespace | Gap |
|---|---|---|---|
| Workspace disk (fio) | |||
| Random read, 4k QD32 (IOPS) | 15,994 | 1,011,926 | 63.3× Namespace |
| Random write, 4k QD32 (IOPS) | 15,991 | 436,056 | 27.3× Namespace |
| Random read, 4k QD1 (IOPS) | 1,775 | 78,615 | 44.3× Namespace |
| QD1 read latency, p99 | 856 µs | 12 µs | 70.2× Namespace |
| Sequential read | 1,002 MiB/s | 4.1 GiB/s | 4.2× Namespace |
| Sequential write | 1,001 MiB/s | 2.9 GiB/s | 3.0× Namespace |
| Sync write, 4k + fdatasync (IOPS) | 540 | 17,844 | 33.0× Namespace |
| Network, cache & Docker | |||
| Download from GitHub | 256 MiB/s | 202 MiB/s | 1.3× RunsOn |
| Cache restore, 4 GB (actions/cache) | 10s | 28s | 2.8× RunsOn |
| Cache save, 4 GB (actions/cache) | 14s | 14s | ≈ even |
| docker pull | 5.0s | 4.2s | 1.2× Namespace |
| Database | |||
| pgbench read/write (TPS) | 3,758 | 8,463 | 2.3× Namespace |
| pgbench read-only (TPS) | 163,575 | 67,294 | 2.4× RunsOn |
| Queue | |||
| Queue under burst load | 20s | 2m 23s plan limit | — |
- ≈ even: under 5% apart, or a build inside both runners' run-to-run spread
- Queue: identical jobs queued at the same instant (burst suite)
- Queue: not compared. Namespace's burst ran 4 jobs at a time, the concurrency limit of the plan this benchmark account is on
- RunsOn at EC2 spot, its default (7-day average of the cheapest us-east-1 zone's spot price, fetched 5 Oct 2026); the jobs ran on spot
- Cost: a managed SaaS runner against RunsOn self-hosted on your AWS account; the effort of running it was not measured