Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

The Performance Budget

The numbers this project holds itself to, and where each is measured. A regression against any number here is treated like a failing test whether or not a job catches it.

The budget

claimbudgetmeasured by
current()≤ baseline + 5% instructionsbenches/instructions.rs, deterministic iai baselines committed beside it
allocations per read0benches/alloc_profile.rs
read under concurrent reloadscales with readers, no writer starvationbenches/engine.rs (read-under-fire), benches/matrix.rs (1→128 readers)
merge costlinear in layersbenches/matrix.rs (2→16 layers)
reload end-to-enddominated by parse+deserialize, not the swapbenches/engine.rs
a million reloadsRSS bounded, FDs flat, no thread growththe nightly leak job (soak/)
a five-hour fault scheduleevery exit invariant holdsthe nightly soak job; the 24-hour claim is a committed local run
compile time and binary sizemonitored, not gatedthe dependency-weight table in MSRV & Features

Against the neighbours

benches-rivals/ races the same load against config-rs and figment — a detached crate, so the rivals never touch this workspace's dependency graph or its audits. Run it yourself:

cd benches-rivals && cargo bench

Cross-language numbers (Viper, Koanf, Dynaconf, pydantic-settings) are architectural-cost positioning, not a race: a GC pause and an FFI hop are not the same axis as a merge algorithm. Where the READMEs quote them, they are hand-run, dated, and reproduced by the scripts they cite — never CI-gated, because a shared runner cannot resolve the differences that matter at this scale.

The one rule

No number on this page may regress silently: a change that moves one lands with the new measurement in the same commit, and the changelog says which trade bought what.