CI Bench

Workload · CI Bench v1

guava workload

Median time runs from 651 s (Vitko Runners (warm starts + test splitting)) to 1167 s (GitHub-hosted runners (ubuntu-latest, 2 vCPU)); GitHub-hosted (ubuntu-latest) takes 1167 s.

Lowest median time
651 s
Vitko Runners (warm starts + test splitting)
GitHub-hosted (ubuntu-latest): 1167 s
Slowest median
1167 s
GitHub-hosted runners (ubuntu-latest, 2 vCPU)
1.8× the lowest
Lowest cost, managed
$0.019
Ubicloud
mean per job
Failed runs
0
no failed runs
of 270 measured runs

Median time

Seconds from start to finish · lower is better
Vitko Runners (warm starts + test splitting)
651 s
Vitko Runners
655 s
Self-hosted runners on AWS (one VM per job)
717 s
Blacksmith
735 s
Self-hosted runners on Google Cloud
820 s
Ubicloud
881 s
RunsOn
897 s
GitHub-hosted larger runner (4 vCPU)
946 s
GitHub-hosted (ubuntu-latest)
1167 s

Table

Ordered by median time. Self-hosted options are priced all-in at 100,000 jobs a month. Green marks the lowest median time and the lowest cost among the managed runners.
ConfigurationMedianp95Queue p50Queue p95CostOK
Vitko Runners (warm starts + test splitting)651 s661 s1 s2 s$0.02230 of 30
Vitko Runners655 s661 s1 s2 s$0.02230 of 30
Self-hosted runners on AWS (one VM per job)717 s783 s51 s108.1 s$0.03230 of 30
Blacksmith735 s875 s8 s10 s$0.05130 of 30
Self-hosted runners on Google Cloud820 s854 s1 s2 s$0.04530 of 30
Ubicloud881 s1086 s19 s23 s$0.01930 of 30
RunsOn897 s919 s18 s22.5 s$0.009630 of 30
GitHub-hosted larger runner (4 vCPU)946 s983 s3 s13.6 s$0.18130 of 30
GitHub-hosted runners (ubuntu-latest, 2 vCPU)1167 s1249 s3 s5.6 s$0.10930 of 30

The job

  • Project: google/guava at v33.7.2 (666338cc49d5686c07e3e4d17f0aa1cec25a2be6), licence Apache-2.0. Fetched at run time, not vendored.
  • Upstream job: .github/workflows/ci.yml, job "pom.xml on JDK 25 on ubuntu-latest" (Maven install, then verify).
  • Benchmark workflow: .github/workflows/wl-guava.yml.

Portability edits (identical for every provider)

  • One matrix cell (pom.xml, JDK 25, Linux). No other changes.

Why it replaced okhttp

okhttp (Gradle) was the first Java/Kotlin workload. In the pilot it failed the flakiness criterion (one HTTP/2 test failed in 3 of 6 GitHub-hosted runs) and its IPv6-loopback tests fail on plain cloud VMs, so it was replaced by the alternate before any result set.

suite/guava holds the workflow and notes.