TechCompare LogoTechCompare

GitHub Actions runners with the best cache performance

Blacksmith macOS arm64 leads the measured results at 262.9 composite MiB/s. 26 of 26 configurations have a score. This ranks the imported tests, not full workflow runtime.

A cache needs to save quickly as well as restore quickly. This ranking combines both transfer directions on each runner's best tested cache or artifact backend. Each score uses one complete backend result, so a fast save from one service is not mixed with a fast restore from another. The leader summary is calculated from the current measurements across every tested platform.

By TechCompare · Updated

Scored configurations
26 / 26
Every tested platform included
Ranking
Highest score first
Fixed benchmark formula

Current leaders

  1. #1

    Blacksmith macOS arm64

    Apple M4 Pro

    262.9 composite MiB/s

    $0.01333333/vCPU/min

  2. #2

    Avrea macOS arm64

    Apple M5 Max

    251.6 composite MiB/s

    $0.01/vCPU/min

  3. #3

    Avrea Linux arm64

    Apple M5 Max

    220.8 composite MiB/s

    $0.006/vCPU/min

Results imported 2026-10-10. Pricing checked 2026-10-10. Higher is better. All operating systems and architectures are included. Prices and value use USD. RunJob's EUR rate is converted at €1 = $1.1206 (ECB, 2026-10-09).

Calculator

Ranked runner results

GitHub Actions runner CPU models, single thread CPU scores, disk, cache, and internet scores, and value per USD compute cost. Missing tests have no score.
RunnerCacheCost/vCPU/minUSDMax vCPU
Blacksmith macOS arm64

Apple M4 Pro

262.9
0.013312
Avrea macOS arm64

Apple M5 Max

251.6
0.0116
Avrea Linux arm64

Apple M5 Max

220.8
0.00616
Latchkey Linux x64

AMD EPYC 7R13

168.2
0.001316
Blacksmith Linux x64

AMD EPYC (model hidden)

154.4
0.00232
GitHub macOS arm64

Apple M2 Pro

145.8
0.02075
Avrea Linux x64

AMD EPYC 4585PX 16-Core

103.8
0.00232
StarSling Linux x64

AMD EPYC (model hidden)

101
0.00264
GitHub Linux x64

AMD EPYC 9V74 80-Core

100.5
0.00396
GitHub Linux x86

AMD EPYC 7763 64-Core

96.6
0.00396
Blacksmith Linux arm64

ARM64 (model undisclosed)

88.2
0.001332
GitHub Linux arm64

Microsoft Cobalt 100

82.1
0.002564
BuildPulse Linux x64

AMD EPYC 9R45

58
0.00264
RunJob Linux x64

AMD EPYC 7502 32-Core

53.5
0.001348
BuildPulse Linux arm64

AWS Graviton (gen undisclosed)

52.2
0.001364
Ubicloud Linux arm64

Ampere Altra Q80-30

50.8
0.000630
Namespace Linux x64

AMD EPYC (model hidden)

49.6
0.001564
Ubicloud Linux x64

AMD Ryzen 9 7950X3D 16-Core

48.5
0.00130
Namespace macOS arm64

Apple M4 Pro

39.6
0.01516
GitHub macOS x64

Intel Core i7-8700B

37.2
0.015512
Namespace Linux arm64

AmpereOne family (SKU undisclosed)

34.7
0.001532
Blacksmith Windows x64

AMD EPYC 4565P 16-Core

24.8
0.00432
GitHub Windows x64

AMD EPYC 7763 64-Core

18.9
0.00596
Avrea Windows x64

AMD EPYC 4585PX 16-Core

17.6
0.00416
GitHub Windows x86

AMD EPYC 7763 64-Core

17.5
0.00596
GitHub Windows arm64

Cobalt 100

13.8
0.00564

Single thread CPU: CoreMark iterations/s. Disk and cache: composite MiB/s. Internet: composite Mbps. Value: score ÷ USD cost/vCPU/min. K means thousand, M means million. Higher is better. Cache uses each runner's best tested cache or artifact backend. Limits: maximum runner vCPU. Prices and value use USD. RunJob's EUR rate is converted at €1 = $1.1206 (ECB, 2026-10-09).

Open the full GitHub Actions runner benchmark tool

How the cache score chooses a backend

For every eligible backend, save speed is payload MiB divided by save seconds and restore speed is payload MiB divided by restore seconds. Their geometric mean is the combined cache score in composite MiB/s. The default chooses the highest combined score for that runner. Both directions must come from the same backend. GitHub Actions cache, provider archive cache, and artifact service modes remain available separately in the full tool.

Verification comes before ranking

A backend must have three verified save and restore pairs with positive, finite payload size and durations. A missing or incomplete service does not receive a score. A runner can still qualify through another tested backend that meets those checks. No untested provider feature is assigned a speed from a marketing claim. Adding a backend result can change which service represents a runner, while leaving its existing measurements intact.

Why cache speed is not cache effectiveness

This test measures the transfer path under a controlled payload. Cache keys, retention, invalidation, compression, extraction, and dependency changes also affect a real workflow. An artifact upload may serve a different purpose from a reusable dependency archive. Inspect the winning backend and ensure its action is suitable for your job. If the compute rate matters, the cache value page divides this same chosen backend score by the quoted per-vCPU minute rate.

Measurement context

Cache tests use a 512 MiB random payload and restore it in a fresh runner job. That creates a reproducible transfer workload and includes the tested action's overhead. It differs from a warm local directory or a persistent volume cache hit. Archive cache services and artifact services appear together when they complete the same verified save and restore workload, with the service name retained on hover and in the full details.

Verdict

Choose a fast backend that fits your workflow's reuse pattern, then test your actual dependency cache. A large archive of many small files can compress and extract differently from this payload. A high score does not establish the best cache hit rate or the fastest package installation.

More runner benchmark scenarios

Frequently asked questions

Which runner currently leads for cache performance?
Blacksmith macOS arm64 leads the measured results at 262.9 composite MiB/s. 26 of 26 configurations have a score. This ranks the imported tests, not full workflow runtime.
Do these runner rankings update automatically?
Yes. The rankings, leaders, counts, table, and structured data are calculated from the shared benchmark dataset, researched pricing, and saved exchange rate during each site build. The prebuild refreshes the ECB exchange rate and keeps the dated saved rate if the fetch fails. Importing new results or updating prices changes the next build. They do not fetch live measurements or provider prices while you browse.
Are all operating systems and architectures included?
Yes. These pages include every imported Linux, Windows, and macOS configuration, including x64, ARM64, and 32-bit x86 binaries. The full tool lets you narrow the platform or provider. Operating system, compiler, and affinity differences remain part of each measured result.
Does a missing result mean a runner scored zero?
No. Missing or unusable measurements stay unscored and appear after scored results. Value also requires a positive quoted cost per vCPU per minute. A missing test does not establish that a runner is slow.