Realisation v1
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
# 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*`).
|
||||
- `compare` suite, `smoke` scale, 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
|
||||
|
||||
1. Add explicit read/edit phase hysteresis.
|
||||
2. Preserve the long-term EWMA across a transition while resetting only new
|
||||
residency evidence; do not relearn from a noisy empty history.
|
||||
3. Give full leaf rebuilds a separate, longer residency and a larger minimum
|
||||
improvement than directory-only changes.
|
||||
4. Add regression tests requiring at most one storage switch and at most one
|
||||
leaf rebuild on a stationary 30k-edit trace.
|
||||
5. 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:
|
||||
|
||||
```text
|
||||
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.
|
||||
Reference in New Issue
Block a user