Skip to content

meta: cold builds 50% faster than PlatformIO (performance audit) #1469

Description

@zackees

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).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions