Intermediate checkpoint: bulk slack smoke v13
This is an exploratory checkpoint, not the final benchmark set.
Scope
- MSVC baseline profile: Release
/O2,/MT, compiler default ISA (no/arch:AVX*). comparesuite,smokescale, three repeats.- Six value categories and 58 valid workload/size cells per complete candidate.
- Raw timings, per-cell medians, aggregate scores, and environment metadata are stored beside this file.
std::deque and std::list are external comparison baselines only. The
adaptive candidate switches exclusively between vector and tiered storage;
std::list uses O(N) traversal to provide the benchmark's index semantics.
Change under test
Bulk construction of tiered storage now fills each leaf to 7/8 capacity rather than 100%. The remaining 1/8 is deliberate insertion slack. Previously the first random insertion into almost every freshly built leaf forced a split and a directory rebuild, so the benchmark measured an avoidable bulk-layout pathology and the policy learned an artificially large leaf size.
Current result
The hierarchical aggregate score is normalized to the best fixed baseline in each cell; higher is better.
| Candidate | Score |
|---|---|
| forced tiered, leaf 64 | 0.39608 |
| forced tiered, leaf 128 | 0.36662 |
| adaptive, deferred reads | 0.34673 |
| adaptive, eager non-const reads | 0.32499 |
| forced tiered, leaf 256 | 0.31051 |
reserved std::vector |
0.29797 |
The new layout makes 64--128-element leaves the strongest fixed candidates in this smoke matrix. The deferred adaptive candidate is already ahead of the vector baseline, but it is not final: stationary edit traces still show unnecessary vector/tiered reversals and occasional repeated shape rebuilds.
Safe continuation point
- Add explicit read/edit phase hysteresis.
- Preserve the long-term EWMA across a transition while resetting only new residency evidence; do not relearn from a noisy empty history.
- Give full leaf rebuilds a separate, longer residency and a larger minimum improvement than directory-only changes.
- Add regression tests requiring at most one storage switch and at most one leaf rebuild on a stationary 30k-edit trace.
- Re-run paired
adapt, then the three-profile quick holdout (scalar, baseline, AVX2).
Source snapshot hashes
The repository had no initial commit at this checkpoint, so git_head is
empty. These hashes identify the relevant source state:
tiered_storage.hpp EF6086BC3C5A348793BF70008092ABD680611478D577ED05187BE2D3391D2390
adaptive_sequence.hpp 060E7BCFC09B15EB2C20E076CE423EA3360B91915FBDB92A8D21303B1067B42F
adaptation_policy.hpp 9D0A08AE34121C2AB76B62495E479B6C79C0A1C331DDE3269493DAB13E3E6FE9
benchmark.cpp AA7CA2D0EF5FEAA14BDCD8EAA44449462A8C981535A62F47588798B6D456B893
analyze_results.ps1 3BC214F7C869A99824E94F813FF380B00937DC4BE752FFB20D825F6A51B7866E
adaptive_sequence.hpp received a configuration-rollback safety fix after the
timing run. It does not alter the measured fast path, but the benchmark should
be repeated after the pending policy work.