Goal
fbuild's cold build is at least 50% faster than PlatformIO's on the nightly Blink benchmark (SVG, benchmark-build-comparison.yml, ubuntu-24.04). Put simply: fbuild_cold_median ≤ 0.5 × platformio_cold_median, sustained for 7 consecutive nightly runs, with the benchmark's cold definition unchanged or changed equally for every tool.
Baseline (2026-09-25, sha 0433e96)
|
cold |
warm |
| PlatformIO |
745 ms |
551 ms |
| fbuild |
2111 ms (2.8× PIO) |
46 ms |
| target |
≤ ~372 ms |
— |
Root cause of today's gap (#1464): the embedded zccache's post-miss include scan uses ~85% of CPU during a cold build, against ~11% for the compiler. LTO and flags match PlatformIO's.
Plan (order matters)
Phase 0: measure
Phase 1: zccache (fix upstream first)
Phase 2: fbuild adoption
Phase 3: beat PlatformIO by 50%
Expectations
Phases 1–2 should remove about 1–1.5 s and bring fbuild to roughly PlatformIO parity. Measured locally at 4 cores, the raw avr-gcc floor is already ~340 ms, close to the 372 ms target, so Phase 3 is required and Phase 0's data decides which Phase 3 items are worth doing.
Performance-audit rules
- Every PR in this effort includes before/after benchmark numbers (median of 3, 4 cores).
- Profile with a symbolized release build:
CARGO_PROFILE_RELEASE_DEBUG=line-tables-only CARGO_PROFILE_RELEASE_STRIP=none, plus perf record --call-graph dwarf.
- No regressions to warm builds (currently 46 ms).
Goal
fbuild's cold build is at least 50% faster than PlatformIO's on the nightly Blink benchmark (SVG,
benchmark-build-comparison.yml, ubuntu-24.04). Put simply:fbuild_cold_median ≤ 0.5 × platformio_cold_median, sustained for 7 consecutive nightly runs, with the benchmark's cold definition unchanged or changed equally for every tool.Baseline (2026-09-25, sha 0433e96)
Root cause of today's gap (#1464): the embedded zccache's post-miss include scan uses ~85% of CPU during a cold build, against ~11% for the compiler. LTO and flags match PlatformIO's.
Plan (order matters)
Phase 0: measure
Phase 1: zccache (fix upstream first)
Phase 2: fbuild adoption
-fltomissing)Phase 3: beat PlatformIO by 50%
Expectations
Phases 1–2 should remove about 1–1.5 s and bring fbuild to roughly PlatformIO parity. Measured locally at 4 cores, the raw avr-gcc floor is already ~340 ms, close to the 372 ms target, so Phase 3 is required and Phase 0's data decides which Phase 3 items are worth doing.
Performance-audit rules
CARGO_PROFILE_RELEASE_DEBUG=line-tables-only CARGO_PROFILE_RELEASE_STRIP=none, plusperf record --call-graph dwarf.