263s → 14s
18.8x with restored IB cache
what to use when
The honest comparison.
The useful question is not "which cache is best?" It is "what got invalidated?" Incredibuild is compelling when compiler work is the expensive part and the runner starts clean.
the rule
Native warm state wins locally. IB helps when warm state disappears.
Native cache
Best when the same machine keeps its build directory and nothing changes.
Tokio Cargo warm: ~0s
Incredibuild Build Cache
Best when a fresh runner can restore content-addressed compiler work.
Tokio IB restored: 13s
Touch invalidation
When mtimes are dirty but contents are identical, native rebuilds; IB reuses.
Cargo touch: 38s · IB touch: 13s
measured evidence
POC numbers that shaped the story.
decision
What should this workflow cache?
Pick the workload shape. The answer should change by ecosystem.
runner context
Faster runners still need the right cache.
Whether you use GitHub Actions, faster hosted runners such as Blacksmith, or disposable runners on Islo, the question is the same: what state is worth restoring into a clean machine? Dependencies, native build state, BuildKit layers, and Incredibuild CI/CD acceleration compiler artifacts answer different parts of the job.
POC demo set
Show three stories, not one claim.
- C++ flagship: DuckDB or RocksDB for the 18x restored-cache win.
- Rust CI: Tokio for fresh runner, full test, and touched-source variants.
- Native-cache contrast: Go or Docker to show when IB is not the right layer.