docs(work-next): state after 2026-09-14 -- perf ledger, measured costs, what failed and why
Records in the repo what two days of perf rounds established: the in-game worker CPU trajectory (~184 s -> ~34 s static), the remove-one ablation costs, the three approaches that were tried and not kept (with where the parked work lives), the measurement lessons that each cost a round, and the next candidates. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TaFdXhTdYMkW1xrV6ApT6Y
This commit is contained in:
1 parent
7a972f513d
commit
7ece3ceafc
1 file changed
+38
@@ -170,6 +170,44 @@ before the always-on LOD0 changes.
|
|||||||
chain, passage landing/floor checks and `GetDensityAt`. An inline bit test is exactly the same
|
chain, passage landing/floor checks and `GetDensityAt`. An inline bit test is exactly the same
|
||||||
predicate, so it changes no field.
|
predicate, so it changes no field.
|
||||||
|
|
||||||
|
## State after 2026-09-14 (HEAD `7a972f5`)
|
||||||
|
|
||||||
|
**In-game generation since the start of 2026-09-13**, headless game path (static = 841 tiles;
|
||||||
|
moving = 160 m at 8 m/s):
|
||||||
|
```
|
||||||
|
worker CPU static LOD0 generation p50 static
|
||||||
|
c65b015 classifier off ~184 s ~75 ms
|
||||||
|
2990009 player-fit memo 48 s 73 ms
|
||||||
|
cfad3d1 tile cache window (LOD3+) 39 s 77 ms
|
||||||
|
ab4bbe3 field-exact LOD0 overhead 33 s 66 ms
|
||||||
|
5489b5e inline exact IsFinite ~31-34 s ~62-66 ms
|
||||||
|
7a972f5 (current) ~34 s ~66 ms
|
||||||
|
```
|
||||||
|
The later rounds' absolute figures come from slightly different harness settings. Compare within a
|
||||||
|
round.
|
||||||
|
|
||||||
|
**Measured, not guessed: what each component costs** (`6ccf371`, remove-one ablation, static worker
|
||||||
|
saving): tunnel SDF 11.4% (and it owns the LOD0 p95 tail), cave warp 10.3%, passage carving 10.1%,
|
||||||
|
landing posts 9.9%, structural posts 5.6%, worms 2.4%, everything else <= 2.2%. Ablations change
|
||||||
|
the field, so these mix computation cost with the cost of the geometry each component creates.
|
||||||
|
|
||||||
|
**Tried and not kept:**
|
||||||
|
- the exact worm block skip: 4% skip rate, neutral, off by default;
|
||||||
|
- value-noise / lattice worms: no gain, removed;
|
||||||
|
- exact culling (SmoothMin cutoff, tile candidates, post early-outs): the build was 23% slower even
|
||||||
|
with every switch off, parked on local branch `wip/exact-cull-20260914`. Only the tunnel-core
|
||||||
|
ablation gate fix was ported.
|
||||||
|
|
||||||
|
**Measurement lessons**, recorded because each cost a round:
|
||||||
|
- line-level sampler attribution of inlined code is a hint; confirm it with an ablation;
|
||||||
|
- a switch-off A/B inside a new build cannot see always-on cost; always compare the final default
|
||||||
|
build against the committed tip's DLL, with a fixed command line;
|
||||||
|
- launch Unreal serially (it is a GUI exe that returns at once), and reap crash reporters.
|
||||||
|
|
||||||
|
**Next candidates:** a cheaper cave warp (field-changing: coarse warp lattice); the tunnel SDF (field-
|
||||||
|
changing merge of the warped SDF and the world-space core); a real per-tile candidate filter
|
||||||
|
designed to cost nothing per sample; the cold read-only audit's findings.
|
||||||
|
|
||||||
### Open design questions for the owner
|
### Open design questions for the owner
|
||||||
- All five strate slots resolve to `DA_Strate3`. Intended?
|
- All five strate slots resolve to `DA_Strate3`. Intended?
|
||||||
- Should a composer roll be allowed to overwrite an explicitly authored value?
|
- Should a composer roll be allowed to overwrite an explicitly authored value?
|
||||||
Reference in new issue
Block a user