GitHub Actions runner benchmarks.
89 runners from 9 providers, from 2 to 12 vCPU, on the same cold Rust, TypeScript and Docker builds.
Build time per providerCost per build per provider
Each provider's best variantEach provider's best 2 vCPU variantEach provider's best 4 vCPU variantEach provider's best 8–12 vCPU variant; shades are build phases in order.; right, its build time.
Fastest: Rust — Namespace 8x32 ≈ RunsOn m8azn.3xlarge · EBS gp3 (12 vCPU); TypeScript — Namespace 8x32 ≈ RunsOn m8a.2xlarge · tmpfs (8 vCPU); Docker — RunsOn r8a.2xlarge · tmpfs (8 vCPU) ≈ Namespace 8x16. Lowest cost per build, on each provider's cheapest machine: RunsOn at its measured EC2 cost, then Ubicloud, in every build. GitHub-hosted: slowest or second-slowest in every build.
Fastest: Rust — Namespace 8x32 ≈ RunsOn m8azn.3xlarge · EBS gp3 (12 vCPU); TypeScript — Namespace 8x32 ≈ RunsOn m8a.2xlarge · tmpfs (8 vCPU); Docker — RunsOn r8a.2xlarge · tmpfs (8 vCPU) ≈ Namespace 8x16. Lowest cost per build, on each provider's cheapest machine: Ubicloud, then RunsOn at EC2 on-demand, in every build. GitHub-hosted: slowest or second-slowest in every build.
At 2 vCPU, fastest: Rust — Namespace 2x8; TypeScript — RunsOn r8a.large · EBS gp3 ≈ Blacksmith 2 vCPU; Docker — RunsOn r8a.large · EBS gp3. Lowest cost per build, on each provider's cheapest machine: RunsOn at its measured EC2 cost, in every build.
At 2 vCPU, fastest: Rust — Namespace 2x8; TypeScript — RunsOn r8a.large · EBS gp3 ≈ Blacksmith 2 vCPU; Docker — RunsOn r8a.large · EBS gp3. Lowest cost per build, on each provider's cheapest machine: Rust and TypeScript — Ubicloud; Docker — RunsOn at EC2 on-demand.
At 4 vCPU, fastest: Rust — Namespace 4x16; TypeScript — RunsOn m8azn.xlarge · gp3 1000 MiB/s ≈ Namespace 4x16; Docker — Namespace 4x16 ≈ Blacksmith 4 vCPU. Lowest cost per build, on each provider's cheapest machine: RunsOn at its measured EC2 cost, then Ubicloud, in every build. GitHub-hosted: slowest or second-slowest in every build.
At 4 vCPU, fastest: Rust — Namespace 4x16; TypeScript — RunsOn m8azn.xlarge · gp3 1000 MiB/s ≈ Namespace 4x16; Docker — Namespace 4x16 ≈ Blacksmith 4 vCPU. Lowest cost per build, on each provider's cheapest machine: Ubicloud, in every build. GitHub-hosted: slowest or second-slowest in every build.
At 8–12 vCPU, fastest: Rust — Namespace 8x32 ≈ RunsOn m8azn.3xlarge · EBS gp3 (12 vCPU); TypeScript — Namespace 8x32 ≈ RunsOn m8a.2xlarge · tmpfs (8 vCPU); Docker — RunsOn r8a.2xlarge · tmpfs (8 vCPU) ≈ Namespace 8x16. Lowest cost per build, on each provider's cheapest machine: RunsOn at its measured EC2 cost, then Ubicloud, in every build. GitHub-hosted: slowest or second-slowest in every build.
At 8–12 vCPU, fastest: Rust — Namespace 8x32 ≈ RunsOn m8azn.3xlarge · EBS gp3 (12 vCPU); TypeScript — Namespace 8x32 ≈ RunsOn m8a.2xlarge · tmpfs (8 vCPU); Docker — RunsOn r8a.2xlarge · tmpfs (8 vCPU) ≈ Namespace 8x16. Lowest cost per build, on each provider's cheapest machine: Ubicloud, in every build. GitHub-hosted: slowest or second-slowest in every build.
Fastest: Rust — Avrea 8 vCPU ≈ Warpbuild xfast (Apple M4 Pro) 12 vCPU; TypeScript — RunsOn m9g.2xlarge · tmpfs (8 vCPU) ≈ Warpbuild xfast (Apple M4 Pro) 12 vCPU; Docker — Avrea 8 vCPU ≈ Namespace Apple silicon (4 vCPU). Lowest cost per build, on each provider's cheapest machine: RunsOn at its measured EC2 cost, then Ubicloud, in every build. GitHub-hosted: 5th to 6th of 7 providers.
Fastest: Rust — Avrea 8 vCPU ≈ Warpbuild xfast (Apple M4 Pro) 12 vCPU; TypeScript — RunsOn m9g.2xlarge · tmpfs (8 vCPU) ≈ Warpbuild xfast (Apple M4 Pro) 12 vCPU; Docker — Avrea 8 vCPU ≈ Namespace Apple silicon (4 vCPU). Lowest cost per build, on each provider's cheapest machine: RunsOn at EC2 on-demand, then Ubicloud, in every build. GitHub-hosted: 5th to 6th of 7 providers.
At 2 vCPU, fastest: Rust — Avrea 2 vCPU; TypeScript — GitHub 2-core ≈ Warpbuild 2 vCPU. Docker not run at 2 vCPU: it needs more than 8 GB of memory. Lowest cost per build, on each provider's cheapest machine: Rust — RunsOn at its measured EC2 cost; TypeScript — Warpbuild. GitHub-hosted: 1st to 4th of 7 providers.
At 2 vCPU, fastest: Rust — Avrea 2 vCPU; TypeScript — GitHub 2-core ≈ Warpbuild 2 vCPU. Docker not run at 2 vCPU: it needs more than 8 GB of memory. Lowest cost per build, on each provider's cheapest machine: Rust — RunsOn at EC2 on-demand; TypeScript — Warpbuild. GitHub-hosted: 1st to 4th of 7 providers.
At 4 vCPU, fastest: Rust and Docker — Namespace Apple silicon ≈ Avrea 4 vCPU; TypeScript — Namespace Apple silicon. Lowest cost per build, on each provider's cheapest machine: RunsOn at its measured EC2 cost, then Ubicloud, in every build. GitHub-hosted: 4th to 5th of 7 providers.
At 4 vCPU, fastest: Rust and Docker — Namespace Apple silicon ≈ Avrea 4 vCPU; TypeScript — Namespace Apple silicon. Lowest cost per build, on each provider's cheapest machine: RunsOn at EC2 on-demand, then Ubicloud, in every build. GitHub-hosted: 4th to 5th of 7 providers.
At 8–12 vCPU, fastest: Rust — Avrea 8 vCPU ≈ Warpbuild xfast (Apple M4 Pro) 12 vCPU; TypeScript — RunsOn m9g.2xlarge · tmpfs (8 vCPU) ≈ Warpbuild xfast (Apple M4 Pro) 12 vCPU; Docker — Avrea 8 vCPU ≈ RunsOn m9gd.2xlarge · local NVMe (8 vCPU). Lowest cost per build, on each provider's cheapest machine: RunsOn at its measured EC2 cost, then Ubicloud, in every build.
At 8–12 vCPU, fastest: Rust — Avrea 8 vCPU ≈ Warpbuild xfast (Apple M4 Pro) 12 vCPU; TypeScript — RunsOn m9g.2xlarge · tmpfs (8 vCPU) ≈ Warpbuild xfast (Apple M4 Pro) 12 vCPU; Docker — Avrea 8 vCPU ≈ RunsOn m9gd.2xlarge · local NVMe (8 vCPU). Lowest cost per build, on each provider's cheapest machine: RunsOn at EC2 on-demand, then Ubicloud, in every build.
Bar shades, light to dark, in execution order: setup = checkout + packages + toolchaincargo fmtcargo testclippy
Each provider's fastest machine at 4 vCPU; RunsOn tested 9, Namespace 2, Ubicloud 2, the others 1.
Bar shades, light to dark, in execution order: toolchainclonebun installtypecheck
Each provider's fastest machine at 4 vCPU; RunsOn tested 9, Namespace 2, Ubicloud 2, the others 1.
≈ RunsOn m8azn.xlarge · gp3 1000 MiB/s and Namespace 4x16: within 5% or inside the run-to-run spread.
Bar shades, light to dark, in execution order: fetch sourcebuildx setupdocker build
Each provider's fastest machine at 4 vCPU; RunsOn tested 7, Ubicloud 2, the others 1.
≈ Namespace 4x16 and Blacksmith 4 vCPU: within 5% or inside the run-to-run spread.
Queue and consistency
How long jobs wait in a burst, and how far build times move from run to run.
- GitHub 2 vCPU · 8 GB p50 4s, p10–p90 3s to 5s, min 2s, max 40s, 75 samples
- Blacksmith 8 vCPU · 32 GB p50 10s, p10–p90 9s to 12s, min 8s, max 14s, 75 samples
- Avrea 2 vCPU · 8 GB p50 11s, p10–p90 10s to 15s, min 9s, max 18s, 75 samples
- StarSling 4 vCPU · 16 GB p50 11s, p10–p90 9s to 12s, min 7s, max 13s, 75 samples
- Warpbuild 2 vCPU · 8 GB p50 12s, p10–p90 11s to 14s, min 10s, max 28s, 75 samples
- RunsOn 12 vCPU · 48 GB p50 16s, p10–p90 16s to 19s, min 15s, max 22s, 45 samples
- Ubicloud 8 vCPU · 32 GB p50 16s, p10–p90 15s to 19s, min 14s, max 22s, 75 samples
- AWS CodeBuild 8 vCPU · 16 GB p50 21s, p10–p90 20s to 23s, min 19s, max 25s, 75 samples
- Namespace 4 vCPU · 8 GB p50 1m 20s, min 7s, max 4m 24s, 75 samples, not ranked: 8 at a time: plan limit
- GitHub 2 vCPU · 8 GB p50 4s, p10–p90 3s to 5s, min 2s, max 40s, 75 samples
- Blacksmith 2 vCPU · 8 GB p50 10s, p10–p90 9s to 12s, min 8s, max 14s, 75 samples
- Avrea 2 vCPU · 8 GB p50 11s, p10–p90 10s to 15s, min 9s, max 18s, 75 samples
- Warpbuild 2 vCPU · 8 GB p50 12s, p10–p90 11s to 14s, min 10s, max 28s, 75 samples
- RunsOn 2 vCPU · 8 GB p50 16s, p10–p90 15s to 19s, min 15s, max 21s, 45 samples
- Ubicloud 2 vCPU · 8 GB p50 18s, p10–p90 16s to 22s, min 15s, max 32s, 75 samples
- AWS CodeBuild 2 vCPU · 3 GB p50 21s, p10–p90 20s to 23s, min 20s, max 26s, 75 samples
- Namespace 2 vCPU · 8 GB p50 1m 22s, min 7s, max 4m 29s, 75 samples, not ranked: 8 at a time: plan limit
- GitHub 4 vCPU · 16 GB p50 4s, p10–p90 3s to 5s, min 2s, max 7s, 75 samples
- Blacksmith 4 vCPU · 16 GB p50 11s, p10–p90 10s to 13s, min 9s, max 14s, 75 samples
- StarSling 4 vCPU · 16 GB p50 11s, p10–p90 9s to 12s, min 7s, max 13s, 75 samples
- Avrea 4 vCPU · 16 GB p50 12s, p10–p90 9s to 1m 33s, min 8s, max 1m 37s, 75 samples
- Warpbuild 4 vCPU · 16 GB p50 13s, p10–p90 11s to 14s, min 11s, max 18s, 75 samples
- RunsOn 4 vCPU · 16 GB p50 17s, p10–p90 16s to 20s, min 16s, max 21s, 45 samples
- Ubicloud 4 vCPU · 16 GB p50 19s, p10–p90 17s to 23s, min 9s, max 28s, 75 samples
- AWS CodeBuild 4 vCPU · 8 GB p50 21s, p10–p90 20s to 1m 21s, min 15s, max 1m 25s, 75 samples
- Namespace 4 vCPU · 8 GB p50 1m 20s, min 7s, max 4m 24s, 75 samples, not ranked: 8 at a time: plan limit
- Blacksmith 8 vCPU · 32 GB p50 10s, p10–p90 9s to 12s, min 8s, max 14s, 75 samples
- Warpbuild 8 vCPU · 32 GB p50 12s, p10–p90 11s to 20s, min 8s, max 29s, 75 samples
- StarSling 8 vCPU · 32 GB p50 13s, p10–p90 10s to 17s, min 9s, max 20s, 75 samples
- RunsOn 12 vCPU · 48 GB p50 16s, p10–p90 16s to 19s, min 15s, max 22s, 45 samples
- Ubicloud 8 vCPU · 32 GB p50 16s, p10–p90 15s to 19s, min 14s, max 22s, 75 samples
- AWS CodeBuild 8 vCPU · 16 GB p50 21s, p10–p90 20s to 23s, min 19s, max 25s, 75 samples
- GitHub 8 vCPU · 32 GB p50 1m 20s, p10–p90 58s to 1m 31s, min 3s, max 1m 37s, 75 samples
- Avrea 8 vCPU · 32 GB p50 1m 25s, min 8s, max 5m 02s, 75 samples, not ranked: 12 at a time: plan limit
- Namespace 8 vCPU · 16 GB p50 3m 22s, min 7s, max 8m 32s, 75 samples, not ranked: 4 at a time: plan limit
- GitHub 2 vCPU · 8 GB p50 6s, p10–p90 5s to 8s, min 4s, max 11s, 90 samples
- Ubicloud 2 vCPU · 8 GB p50 9s, p10–p90 9s to 23s, min 8s, max 27s, 75 samples
- Warpbuild 6 vCPU · 14 GB p50 14s, p10–p90 12s to 17s, min 11s, max 1m 32s, 90 samples
- Blacksmith 4 vCPU · 16 GB p50 15s, p10–p90 13s to 16s, min 12s, max 19s, 90 samples
- RunsOn 2 vCPU · 8 GB p50 17s, p10–p90 16s to 18s, min 16s, max 54s, 60 samples
- Avrea 4 vCPU · 16 GB p50 22s, p10–p90 20s to 1m 53s, min 20s, max 1m 55s, 90 samples
- Namespace 4 vCPU · 8 GB p50 2m 28s, min 14s, max 4m 37s, 75 samples, not ranked: 8 at a time: plan limit
- GitHub 2 vCPU · 8 GB p50 6s, p10–p90 5s to 8s, min 4s, max 11s, 90 samples
- Ubicloud 2 vCPU · 8 GB p50 9s, p10–p90 9s to 23s, min 8s, max 27s, 75 samples
- Blacksmith 2 vCPU · 6 GB p50 15s, p10–p90 14s to 19s, min 13s, max 31s, 90 samples
- RunsOn 2 vCPU · 8 GB p50 17s, p10–p90 16s to 18s, min 16s, max 54s, 60 samples
- Avrea 2 vCPU · 8 GB p50 23s, p10–p90 20s to 28s, min 18s, max 1m 27s, 90 samples
- Warpbuild 2 vCPU · 8 GB p50 35s, p10–p90 31s to 38s, min 6s, max 1m 44s, 75 samples
- Namespace 2 vCPU · 8 GB p50 2m 30s, min 13s, max 4m 37s, 75 samples, not ranked: 8 at a time: plan limit
- GitHub 4 vCPU · 16 GB p50 6s, p10–p90 5s to 8s, min 4s, max 11s, 90 samples
- Blacksmith 4 vCPU · 16 GB p50 15s, p10–p90 13s to 16s, min 12s, max 19s, 90 samples
- RunsOn 4 vCPU · 16 GB p50 17s, p10–p90 16s to 20s, min 15s, max 55s, 60 samples
- Ubicloud 4 vCPU · 16 GB p50 20s, p10–p90 9s to 24s, min 9s, max 29s, 75 samples
- Avrea 4 vCPU · 16 GB p50 22s, p10–p90 20s to 1m 53s, min 20s, max 1m 55s, 90 samples
- Warpbuild 4 vCPU · 16 GB p50 34s, p10–p90 9s to 37s, min 6s, max 40s, 90 samples
- Namespace 4 vCPU · 8 GB p50 2m 28s, min 14s, max 4m 37s, 75 samples, not ranked: 8 at a time: plan limit
- Blacksmith 8 vCPU · 32 GB p50 15s, p10–p90 13s to 27s, min 12s, max 28s, 90 samples
- Warpbuild 12 vCPU · 28 GB p50 15s, p10–p90 13s to 16s, min 12s, max 5m 51s, 90 samples
- RunsOn 8 vCPU · 32 GB p50 17s, p10–p90 15s to 19s, min 15s, max 20s, 60 samples
- Ubicloud 8 vCPU · 32 GB p50 21s, p10–p90 10s to 25s, min 8s, max 2m 22s, 75 samples
- Avrea 8 vCPU · 32 GB p50 25s, min 21s, max 5m 31s, 90 samples, not ranked: 12 at a time: plan limit
- Namespace 8 vCPU · 16 GB p50 4m 30s, min 14s, max 8m 38s, 75 samples, not ranked: 4 at a time: plan limit
- Namespace 8 vCPU · 32 GB spread 4.6% (p10–p90) around a p50 of 1m 10s, min 1m 07s, max 1m 11s, 5 samples
- RunsOn 12 vCPU · 48 GB spread 6.9% (p10–p90) around a p50 of 1m 10s, min 1m 06s, max 1m 12s, 5 samples
- StarSling 8 vCPU · 32 GB spread 14.4% (p10–p90) around a p50 of 1m 18s, min 1m 15s, max 1m 31s, 5 samples
- Blacksmith 8 vCPU · 32 GB spread 17% (p10–p90) around a p50 of 1m 21s, min 1m 13s, max 1m 34s, 5 samples
- Avrea 8 vCPU · 32 GB spread 18.5% (p10–p90) around a p50 of 1m 34s, min 1m 18s, max 1m 39s, 5 samples
- Warpbuild 8 vCPU · 32 GB spread 19.4% (p10–p90) around a p50 of 1m 34s, min 1m 31s, max 1m 56s, 5 samples
- Ubicloud 8 vCPU · 32 GB spread 22.8% (p10–p90) around a p50 of 1m 41s, min 1m 26s, max 1m 55s, 5 samples
- GitHub 8 vCPU · 32 GB spread 29.2% (p10–p90) around a p50 of 1m 59s, min 1m 44s, max 2m 32s, 5 samples
- AWS CodeBuild 8 vCPU · 16 GB p50 3m 00s, min 2m 38s, max 3m 07s, 4 samples, not ranked
- Namespace 2 vCPU · 8 GB spread 1.4% (p10–p90) around a p50 of 2m 39s, min 2m 37s, max 2m 40s, 5 samples
- RunsOn 2 vCPU · 8 GB spread 4.8% (p10–p90) around a p50 of 2m 51s, min 2m 48s, max 2m 57s, 5 samples
- GitHub 2 vCPU · 8 GB spread 7.7% (p10–p90) around a p50 of 6m 38s, min 6m 09s, max 6m 46s, 5 samples
- Avrea 2 vCPU · 8 GB spread 19.8% (p10–p90) around a p50 of 3m 59s, min 3m 27s, max 4m 24s, 5 samples
- Blacksmith 2 vCPU · 8 GB spread 20.4% (p10–p90) around a p50 of 3m 21s, min 2m 48s, max 3m 33s, 5 samples
- Warpbuild 2 vCPU · 8 GB spread 23.1% (p10–p90) around a p50 of 3m 47s, min 3m 08s, max 4m 24s, 5 samples
- Ubicloud 2 vCPU · 8 GB spread 27.4% (p10–p90) around a p50 of 3m 58s, min 3m 44s, max 5m 06s, 5 samples
- AWS CodeBuild 2 vCPU · 3 GB p50 8m 19s, min 7m 47s, max 8m 31s, 4 samples, not ranked
- Namespace 4 vCPU · 16 GB spread 2.9% (p10–p90) around a p50 of 1m 38s, min 1m 37s, max 1m 41s, 5 samples
- RunsOn 4 vCPU · 16 GB spread 5.1% (p10–p90) around a p50 of 1m 53s, min 1m 50s, max 1m 57s, 5 samples
- Warpbuild 4 vCPU · 16 GB spread 18% (p10–p90) around a p50 of 2m 20s, min 2m 00s, max 2m 38s, 5 samples
- Avrea 4 vCPU · 16 GB spread 21.8% (p10–p90) around a p50 of 2m 15s, min 2m 05s, max 2m 42s, 5 samples
- Ubicloud 4 vCPU · 16 GB spread 26.5% (p10–p90) around a p50 of 2m 38s, min 2m 16s, max 3m 19s, 5 samples
- GitHub 4 vCPU · 16 GB spread 30.5% (p10–p90) around a p50 of 3m 47s, min 2m 31s, max 4m 09s, 5 samples
- Blacksmith 4 vCPU · 16 GB spread 67.7% (p10–p90) around a p50 of 1m 59s, min 1m 41s, max 3m 44s, 5 samples
- StarSling 4 vCPU · 16 GB p50 1m 51s, min 1m 49s, max 2m 15s, 4 samples, not ranked
- AWS CodeBuild 4 vCPU · 8 GB p50 4m 42s, min 4m 25s, max 4m 44s, 4 samples, not ranked
- Namespace 8 vCPU · 32 GB spread 4.6% (p10–p90) around a p50 of 1m 10s, min 1m 07s, max 1m 11s, 5 samples
- RunsOn 12 vCPU · 48 GB spread 6.9% (p10–p90) around a p50 of 1m 10s, min 1m 06s, max 1m 12s, 5 samples
- StarSling 8 vCPU · 32 GB spread 14.4% (p10–p90) around a p50 of 1m 18s, min 1m 15s, max 1m 31s, 5 samples
- Blacksmith 8 vCPU · 32 GB spread 17% (p10–p90) around a p50 of 1m 21s, min 1m 13s, max 1m 34s, 5 samples
- Avrea 8 vCPU · 32 GB spread 18.5% (p10–p90) around a p50 of 1m 34s, min 1m 18s, max 1m 39s, 5 samples
- Warpbuild 8 vCPU · 32 GB spread 19.4% (p10–p90) around a p50 of 1m 34s, min 1m 31s, max 1m 56s, 5 samples
- Ubicloud 8 vCPU · 32 GB spread 22.8% (p10–p90) around a p50 of 1m 41s, min 1m 26s, max 1m 55s, 5 samples
- GitHub 8 vCPU · 32 GB spread 29.2% (p10–p90) around a p50 of 1m 59s, min 1m 44s, max 2m 32s, 5 samples
- AWS CodeBuild 8 vCPU · 16 GB p50 3m 00s, min 2m 38s, max 3m 07s, 4 samples, not ranked
- RunsOn 8 vCPU · 32 GB spread 4.5% (p10–p90) around a p50 of 1m 28s, min 1m 25s, max 1m 31s, 5 samples
- GitHub 4 vCPU · 16 GB spread 6.2% (p10–p90) around a p50 of 3m 05s, min 2m 56s, max 3m 11s, 5 samples
- Ubicloud 8 vCPU · 32 GB spread 13.1% (p10–p90) around a p50 of 3m 14s, min 3m 02s, max 3m 33s, 5 samples
- Blacksmith 8 vCPU · 32 GB spread 16% (p10–p90) around a p50 of 3m 18s, min 2m 53s, max 3m 41s, 5 samples
- Namespace 4 vCPU · 16 GB spread 19.3% (p10–p90) around a p50 of 1m 20s, min 1m 17s, max 1m 40s, 5 samples
- Warpbuild 12 vCPU · 28 GB spread 30.3% (p10–p90) around a p50 of 1m 08s, min 1m 04s, max 1m 37s, 5 samples
- Avrea 8 vCPU · 32 GB spread 32.9% (p10–p90) around a p50 of 59s, min 57s, max 1m 18s, 5 samples
- RunsOn 2 vCPU · 8 GB spread 4.1% (p10–p90) around a p50 of 3m 09s, min 3m 01s, max 3m 10s, 5 samples
- GitHub 2 vCPU · 8 GB spread 7.8% (p10–p90) around a p50 of 5m 17s, min 5m 11s, max 5m 45s, 5 samples
- Warpbuild 2 vCPU · 8 GB spread 11.3% (p10–p90) around a p50 of 4m 37s, min 4m 20s, max 4m 58s, 5 samples
- Namespace 2 vCPU · 8 GB spread 13.9% (p10–p90) around a p50 of 8m 57s, min 8m 24s, max 9m 53s, 5 samples
- Avrea 2 vCPU · 8 GB spread 14.6% (p10–p90) around a p50 of 1m 58s, min 1m 53s, max 2m 13s, 5 samples
- Ubicloud 2 vCPU · 8 GB spread 17.1% (p10–p90) around a p50 of 8m 42s, min 7m 29s, max 9m 21s, 5 samples
- Blacksmith 2 vCPU · 6 GB spread 17.1% (p10–p90) around a p50 of 7m 43s, min 6m 57s, max 8m 49s, 5 samples
- RunsOn 4 vCPU · 16 GB spread 3.3% (p10–p90) around a p50 of 2m 02s, min 1m 59s, max 2m 05s, 5 samples
- Warpbuild 4 vCPU · 16 GB spread 4.3% (p10–p90) around a p50 of 3m 00s, min 2m 53s, max 3m 06s, 5 samples
- GitHub 4 vCPU · 16 GB spread 6.2% (p10–p90) around a p50 of 3m 05s, min 2m 56s, max 3m 11s, 5 samples
- Ubicloud 4 vCPU · 16 GB spread 9% (p10–p90) around a p50 of 5m 34s, min 4m 57s, max 5m 45s, 5 samples
- Blacksmith 4 vCPU · 16 GB spread 16.4% (p10–p90) around a p50 of 5m 04s, min 4m 04s, max 5m 24s, 5 samples
- Namespace 4 vCPU · 16 GB spread 19.3% (p10–p90) around a p50 of 1m 20s, min 1m 17s, max 1m 40s, 5 samples
- Avrea 4 vCPU · 16 GB spread 24.6% (p10–p90) around a p50 of 1m 22s, min 1m 16s, max 1m 39s, 5 samples
- RunsOn 8 vCPU · 32 GB spread 4.5% (p10–p90) around a p50 of 1m 28s, min 1m 25s, max 1m 31s, 5 samples
- Ubicloud 8 vCPU · 32 GB spread 13.1% (p10–p90) around a p50 of 3m 14s, min 3m 02s, max 3m 33s, 5 samples
- Blacksmith 8 vCPU · 32 GB spread 16% (p10–p90) around a p50 of 3m 18s, min 2m 53s, max 3m 41s, 5 samples
- Namespace 8 vCPU · 16 GB spread 16.8% (p10–p90) around a p50 of 3m 34s, min 3m 24s, max 4m 08s, 5 samples
- Warpbuild 12 vCPU · 28 GB spread 30.3% (p10–p90) around a p50 of 1m 08s, min 1m 04s, max 1m 37s, 5 samples
- Avrea 8 vCPU · 32 GB spread 32.9% (p10–p90) around a p50 of 59s, min 57s, max 1m 18s, 5 samples
- Namespace 8 vCPU · 32 GB spread 5.3% (p10–p90) around a p50 of 30s, min 30s, max 32s, 5 samples
- StarSling 8 vCPU · 32 GB spread 5.9% (p10–p90) around a p50 of 37s, min 35s, max 38s, 5 samples
- AWS CodeBuild 8 vCPU · 16 GB spread 6.5% (p10–p90) around a p50 of 1m 17s, min 1m 17s, max 1m 24s, 5 samples
- RunsOn 8 vCPU · 32 GB spread 9.3% (p10–p90) around a p50 of 30s, min 29s, max 33s, 5 samples
- Ubicloud 8 vCPU · 32 GB spread 17.8% (p10–p90) around a p50 of 45s, min 42s, max 52s, 5 samples
- Blacksmith 8 vCPU · 32 GB spread 23.8% (p10–p90) around a p50 of 32s, min 31s, max 41s, 5 samples
- GitHub 8 vCPU · 32 GB spread 28.2% (p10–p90) around a p50 of 1m 01s, min 55s, max 1m 17s, 5 samples
- Warpbuild 8 vCPU · 32 GB spread 69.5% (p10–p90) around a p50 of 42s, min 35s, max 1m 17s, 5 samples
- RunsOn 2 vCPU · 16 GB spread 11.1% (p10–p90) around a p50 of 1m 41s, min 1m 34s, max 1m 50s, 5 samples
- Blacksmith 2 vCPU · 8 GB spread 21.3% (p10–p90) around a p50 of 1m 44s, min 1m 35s, max 2m 06s, 5 samples
- Warpbuild 2 vCPU · 8 GB spread 44.4% (p10–p90) around a p50 of 2m 52s, min 2m 07s, max 3m 39s, 5 samples
- Ubicloud 2 vCPU · 8 GB spread 76.4% (p10–p90) around a p50 of 2m 28s, min 2m 09s, max 4m 20s, 5 samples
- GitHub 2 vCPU · 8 GB p50 3m 49s, min 3m 30s, max 3m 56s, 4 samples, not ranked
- StarSling 4 vCPU · 16 GB spread 8.3% (p10–p90) around a p50 of 53s, min 49s, max 55s, 5 samples
- RunsOn 4 vCPU · 16 GB spread 8.9% (p10–p90) around a p50 of 45s, min 44s, max 50s, 5 samples
- Namespace 4 vCPU · 16 GB spread 11.5% (p10–p90) around a p50 of 47s, min 45s, max 52s, 5 samples
- GitHub 4 vCPU · 16 GB spread 22.4% (p10–p90) around a p50 of 1m 56s, min 1m 25s, max 2m 03s, 5 samples
- Ubicloud 4 vCPU · 16 GB spread 25.8% (p10–p90) around a p50 of 1m 29s, min 1m 12s, max 1m 41s, 5 samples
- Blacksmith 4 vCPU · 16 GB spread 44.8% (p10–p90) around a p50 of 54s, min 49s, max 1m 26s, 5 samples
- Warpbuild 4 vCPU · 16 GB spread 52.8% (p10–p90) around a p50 of 1m 29s, min 49s, max 1m 50s, 5 samples
- Namespace 8 vCPU · 32 GB spread 5.3% (p10–p90) around a p50 of 30s, min 30s, max 32s, 5 samples
- StarSling 8 vCPU · 32 GB spread 5.9% (p10–p90) around a p50 of 37s, min 35s, max 38s, 5 samples
- AWS CodeBuild 8 vCPU · 16 GB spread 6.5% (p10–p90) around a p50 of 1m 17s, min 1m 17s, max 1m 24s, 5 samples
- RunsOn 8 vCPU · 32 GB spread 9.3% (p10–p90) around a p50 of 30s, min 29s, max 33s, 5 samples
- Ubicloud 8 vCPU · 32 GB spread 17.8% (p10–p90) around a p50 of 45s, min 42s, max 52s, 5 samples
- Blacksmith 8 vCPU · 32 GB spread 23.8% (p10–p90) around a p50 of 32s, min 31s, max 41s, 5 samples
- GitHub 8 vCPU · 32 GB spread 28.2% (p10–p90) around a p50 of 1m 01s, min 55s, max 1m 17s, 5 samples
- Warpbuild 8 vCPU · 32 GB spread 69.5% (p10–p90) around a p50 of 42s, min 35s, max 1m 17s, 5 samples
- Namespace 4 vCPU · 16 GB spread 4.2% (p10–p90) around a p50 of 38s, min 37s, max 39s, 5 samples
- Blacksmith 8 vCPU · 32 GB spread 4.4% (p10–p90) around a p50 of 1m 21s, min 1m 19s, max 1m 23s, 5 samples
- RunsOn 8 vCPU · 32 GB spread 7.6% (p10–p90) around a p50 of 29s, min 29s, max 32s, 5 samples
- GitHub 4 vCPU · 16 GB spread 10.1% (p10–p90) around a p50 of 1m 25s, min 1m 18s, max 1m 31s, 5 samples
- Warpbuild 12 vCPU · 28 GB spread 23.9% (p10–p90) around a p50 of 31s, min 30s, max 39s, 5 samples
- Ubicloud 8 vCPU · 32 GB spread 39.5% (p10–p90) around a p50 of 1m 17s, min 1m 11s, max 1m 59s, 5 samples
- GitHub 2 vCPU · 8 GB spread 34% (p10–p90) around a p50 of 3m 01s, min 2m 52s, max 4m 04s, 5 samples
- Blacksmith 2 vCPU · 6 GB spread 47% (p10–p90) around a p50 of 6m 25s, min 4m 43s, max 8m 58s, 5 samples
- Warpbuild 2 vCPU · 8 GB spread 100.2% (p10–p90) around a p50 of 3m 24s, min 1m 57s, max 7m 37s, 5 samples
2 providers have under 3 runs so far
RunsOn and Ubicloud.
- Warpbuild 4 vCPU · 16 GB spread 3.9% (p10–p90) around a p50 of 1m 11s, min 1m 09s, max 1m 13s, 5 samples
- Namespace 4 vCPU · 16 GB spread 4.2% (p10–p90) around a p50 of 38s, min 37s, max 39s, 5 samples
- RunsOn 4 vCPU · 16 GB spread 5.7% (p10–p90) around a p50 of 46s, min 45s, max 48s, 5 samples
- Ubicloud 4 vCPU · 16 GB spread 8.4% (p10–p90) around a p50 of 2m 04s, min 1m 59s, max 2m 11s, 5 samples
- GitHub 4 vCPU · 16 GB spread 10.1% (p10–p90) around a p50 of 1m 25s, min 1m 18s, max 1m 31s, 5 samples
- Blacksmith 4 vCPU · 16 GB spread 17.9% (p10–p90) around a p50 of 2m 21s, min 2m 06s, max 2m 38s, 5 samples
- Blacksmith 8 vCPU · 32 GB spread 4.4% (p10–p90) around a p50 of 1m 21s, min 1m 19s, max 1m 23s, 5 samples
- RunsOn 8 vCPU · 32 GB spread 7.6% (p10–p90) around a p50 of 29s, min 29s, max 32s, 5 samples
- Warpbuild 12 vCPU · 28 GB spread 23.9% (p10–p90) around a p50 of 31s, min 30s, max 39s, 5 samples
- Ubicloud 8 vCPU · 32 GB spread 39.5% (p10–p90) around a p50 of 1m 17s, min 1m 11s, max 1m 59s, 5 samples
- Namespace 8 vCPU · 32 GB spread 61.1% (p10–p90) around a p50 of 1m 28s, min 1m 24s, max 2m 41s, 5 samples
- Namespace 8 vCPU · 16 GB spread 2.4% (p10–p90) around a p50 of 3m 57s, min 3m 52s, max 4m 00s, 5 samples
- Warpbuild 8 vCPU · 32 GB spread 7.2% (p10–p90) around a p50 of 4m 52s, min 4m 41s, max 5m 08s, 5 samples
- RunsOn 8 vCPU · 64 GB spread 7.5% (p10–p90) around a p50 of 3m 46s, min 3m 33s, max 3m 52s, 5 samples
- Blacksmith 8 vCPU · 32 GB spread 11.1% (p10–p90) around a p50 of 3m 58s, min 3m 53s, max 4m 29s, 5 samples
- Ubicloud 8 vCPU · 32 GB spread 17.5% (p10–p90) around a p50 of 7m 09s, min 6m 06s, max 7m 45s, 5 samples
- Avrea 8 vCPU · 32 GB spread 28.9% (p10–p90) around a p50 of 4m 47s, min 4m 31s, max 6m 40s, 5 samples
- StarSling 8 vCPU · 32 GB spread 94.9% (p10–p90) around a p50 of 4m 22s, min 3m 54s, max 8m 17s, 5 samples
- GitHub 8 vCPU · 32 GB spread 337.7% (p10–p90) around a p50 of 8m 22s, min 6m 07s, max 52m 26s, 5 samples
- AWS CodeBuild 8 vCPU · 16 GB p50 13m 41s, min 12m 41s, max 13m 53s, 4 samples, not ranked
- RunsOn 2 vCPU · 16 GB spread 5.8% (p10–p90) around a p50 of 11m 18s, min 11m 09s, max 12m 07s, 5 samples
- RunsOn 4 vCPU · 16 GB spread 6.7% (p10–p90) around a p50 of 6m 42s, min 6m 21s, max 6m 54s, 5 samples
- Namespace 4 vCPU · 16 GB spread 7.4% (p10–p90) around a p50 of 5m 01s, min 4m 48s, max 5m 14s, 5 samples
- Warpbuild 4 vCPU · 16 GB spread 7.7% (p10–p90) around a p50 of 7m 35s, min 7m 17s, max 8m 04s, 5 samples
- Avrea 4 vCPU · 16 GB spread 8.9% (p10–p90) around a p50 of 7m 22s, min 6m 46s, max 7m 44s, 5 samples
- Blacksmith 4 vCPU · 16 GB spread 13.9% (p10–p90) around a p50 of 5m 19s, min 5m 06s, max 5m 57s, 5 samples
- GitHub 4 vCPU · 16 GB spread 14.9% (p10–p90) around a p50 of 12m 44s, min 12m 30s, max 15m 18s, 5 samples
- Ubicloud 4 vCPU · 16 GB spread 33.1% (p10–p90) around a p50 of 10m 35s, min 9m 57s, max 13m 54s, 5 samples
- StarSling 4 vCPU · 16 GB spread 43.9% (p10–p90) around a p50 of 5m 41s, min 5m 33s, max 9m 34s, 5 samples
- Namespace 8 vCPU · 16 GB spread 2.4% (p10–p90) around a p50 of 3m 57s, min 3m 52s, max 4m 00s, 5 samples
- Warpbuild 8 vCPU · 32 GB spread 7.2% (p10–p90) around a p50 of 4m 52s, min 4m 41s, max 5m 08s, 5 samples
- RunsOn 8 vCPU · 64 GB spread 7.5% (p10–p90) around a p50 of 3m 46s, min 3m 33s, max 3m 52s, 5 samples
- Blacksmith 8 vCPU · 32 GB spread 11.1% (p10–p90) around a p50 of 3m 58s, min 3m 53s, max 4m 29s, 5 samples
- Ubicloud 8 vCPU · 32 GB spread 17.5% (p10–p90) around a p50 of 7m 09s, min 6m 06s, max 7m 45s, 5 samples
- Avrea 8 vCPU · 32 GB spread 28.9% (p10–p90) around a p50 of 4m 47s, min 4m 31s, max 6m 40s, 5 samples
- StarSling 8 vCPU · 32 GB spread 94.9% (p10–p90) around a p50 of 4m 22s, min 3m 54s, max 8m 17s, 5 samples
- GitHub 8 vCPU · 32 GB spread 337.7% (p10–p90) around a p50 of 8m 22s, min 6m 07s, max 52m 26s, 5 samples
- AWS CodeBuild 8 vCPU · 16 GB p50 13m 41s, min 12m 41s, max 13m 53s, 4 samples, not ranked
- RunsOn 8 vCPU · 32 GB spread 4.7% (p10–p90) around a p50 of 4m 33s, min 4m 18s, max 4m 34s, 5 samples
- Namespace 4 vCPU · 16 GB spread 7.6% (p10–p90) around a p50 of 4m 29s, min 4m 19s, max 4m 41s, 5 samples
- Warpbuild 12 vCPU · 28 GB spread 9.5% (p10–p90) around a p50 of 5m 40s, min 5m 17s, max 5m 58s, 5 samples
- Avrea 8 vCPU · 32 GB spread 18.8% (p10–p90) around a p50 of 4m 13s, min 3m 36s, max 4m 44s, 5 samples
- Ubicloud 8 vCPU · 32 GB spread 19.1% (p10–p90) around a p50 of 10m 14s, min 9m 40s, max 12m 19s, 5 samples
- Blacksmith 8 vCPU · 32 GB spread 28.6% (p10–p90) around a p50 of 8m 13s, min 7m 57s, max 11m 31s, 5 samples
- GitHub 4 vCPU · 16 GB spread 164.2% (p10–p90) around a p50 of 9m 45s, min 9m 24s, max 35m 34s, 5 samples
- Warpbuild 4 vCPU · 16 GB spread 3.4% (p10–p90) around a p50 of 10m 07s, min 9m 52s, max 10m 14s, 5 samples
- Namespace 4 vCPU · 16 GB spread 7.6% (p10–p90) around a p50 of 4m 29s, min 4m 19s, max 4m 41s, 5 samples
- Avrea 4 vCPU · 16 GB spread 9.2% (p10–p90) around a p50 of 4m 57s, min 4m 30s, max 5m 09s, 5 samples
- Ubicloud 4 vCPU · 16 GB spread 26.7% (p10–p90) around a p50 of 15m 17s, min 12m 34s, max 17m 18s, 5 samples
- Blacksmith 4 vCPU · 16 GB spread 31.9% (p10–p90) around a p50 of 12m 12s, min 11m 05s, max 16m 53s, 5 samples
- GitHub 4 vCPU · 16 GB spread 164.2% (p10–p90) around a p50 of 9m 45s, min 9m 24s, max 35m 34s, 5 samples
- RunsOn 4 vCPU · 16 GB p50 6m 23s, min 6m 13s, max 6m 30s, 4 samples, not ranked
- RunsOn 8 vCPU · 32 GB spread 4.7% (p10–p90) around a p50 of 4m 33s, min 4m 18s, max 4m 34s, 5 samples
- Namespace 8 vCPU · 32 GB spread 8.2% (p10–p90) around a p50 of 9m 41s, min 9m 16s, max 10m 25s, 5 samples
- Warpbuild 12 vCPU · 28 GB spread 9.5% (p10–p90) around a p50 of 5m 40s, min 5m 17s, max 5m 58s, 5 samples
- Avrea 8 vCPU · 32 GB spread 18.8% (p10–p90) around a p50 of 4m 13s, min 3m 36s, max 4m 44s, 5 samples
- Ubicloud 8 vCPU · 32 GB spread 19.1% (p10–p90) around a p50 of 10m 14s, min 9m 40s, max 12m 19s, 5 samples
- Blacksmith 8 vCPU · 32 GB spread 28.6% (p10–p90) around a p50 of 8m 13s, min 7m 57s, max 11m 31s, 5 samples
Beyond builds
The same runners, one question each.
- CPU Fastest single-thread on x64: Namespace 4x16, 4,700 PassMark.
- Cache 4 GB restore on x64, any size: RunsOn 10s (12 vCPU), then Blacksmith 13s (2 vCPU); GitHub's own service 33s (8 vCPU).4 GB restore on x64 at 2 vCPU: Blacksmith 13s, then RunsOn 19s; GitHub's own service 59s.4 GB restore on x64 at 4 vCPU: Blacksmith 14s, then RunsOn 17s; GitHub's own service 41s.4 GB restore on x64 at 8–12 vCPU: RunsOn 10s (12 vCPU), then Avrea 15s (8 vCPU); GitHub's own service 33s (8 vCPU).
- Disk One small read at a time (QD1) on x64: from 1,763 to 84,854 reads per second, depending on the provider's disk.
- EC2 storage NVMe, gp3 and tmpfs on the same instances, and what each does to the builds above.
- CPU Fastest single-thread on arm64: Avrea 2 vCPU, 5,000 PassMark.
- Cache 4 GB restore on arm64, any size: Avrea 11s (4 vCPU), then RunsOn 13s (8 vCPU); GitHub's own service 36s (4 vCPU).4 GB restore on arm64 at 2 vCPU: Avrea 12s, then Warpbuild 28s; GitHub's own service 55s.4 GB restore on arm64 at 4 vCPU: Avrea 11s, then RunsOn 18s; GitHub's own service 36s.4 GB restore on arm64 at 8–12 vCPU: Avrea 11s (8 vCPU), then RunsOn 13s (8 vCPU).
- Disk One small read at a time (QD1) on arm64: from 8,635 to 27,054 reads per second, depending on the provider's disk.
- EC2 storage NVMe, gp3 and tmpfs on the same instances, and what each does to the builds above.
Providers
Price per minute of a 4 vCPU runner on x64 (its shape beside each price); RunsOn at EC2 spot and on-demand.Price per minute of a 4 vCPU runner on arm64 (its shape beside each price); RunsOn at EC2 spot and on-demand.
Cost per build is variable cost only; licenses and plan fees are flat, on each provider's page. Estimate your bill