docs: correct the rebuild-cost yardstick in ADR-0004 and the spec
Measured while building #16: at 10 000 enemies the grid rebuild costs 0.057 ms against 0.021 ms for move_enemies — 2.7x more, not less. ADR-0004 §3 counted arithmetic and missed what dominates: move_enemies is a linear table walk, the rebuild writes into ~7000 scattered buckets. The decision does not change. It never rested on the comparison but on the absolute bound of 0.10 ms, and 0.057 ms is 0.34 % of the frame budget; an incremental update would pay the same scattered write on every cell crossing. Revision trigger 1 and the acceptance criterion of spec feature 3 are restated on that bound, which is what the runnable check now asserts. Also records the second deviation the build produced: a cell holds (Entity, Vec2) rather than Entity, because soft separation writes Transform while reading its neighbours' positions.
This commit is contained in:
@@ -141,9 +141,11 @@ Auslöse-System und die Projektil-Kollision bedient.
|
||||
Sprung-zu-Welle auf die höchste im Debug-Panel erreichbare Welle.
|
||||
- Bei 10 000 gleichzeitigen Gegnern bleibt die Frametime unter 16,67 ms (Nachmessung mit dem Aufbau
|
||||
aus `examples/perf_spike.rs`, nach dem Wechsel auf echte Sprites zu wiederholen).
|
||||
- Der Rebuild des `SpatialGrid` kostet bei 10 000 Gegnern **nicht mehr als `move_enemies` im selben
|
||||
Frame** (ADR-0004 §3 — die Entscheidung gegen ein inkrementelles Update steht auf dieser Annahme;
|
||||
reißt sie, ist die ADR fällig, nicht die Zahl).
|
||||
- Der Rebuild des `SpatialGrid` kostet bei 10 000 Gegnern **höchstens 0,10 ms** (ADR-0004 §3 — die
|
||||
Entscheidung gegen ein inkrementelles Update steht auf dieser Schranke; reißt sie, ist die ADR
|
||||
fällig, nicht die Zahl). *Bis 2026-08-11 stand hier „nicht mehr als `move_enemies` im selben
|
||||
Frame"; die Messung in #16 hat diesen Maßstab widerlegt — gemessen 0,057 ms gegen 0,021 ms —, ohne
|
||||
die Schranke zu reißen. Siehe den Nachtrag zu ADR-0004 §3.*
|
||||
- Kein Gegner bewegt sich in einem Frame vom Turm **weg**, solange ihn keine Fähigkeit dorthin
|
||||
drückt — die Separationsklemmung macht das konstruktiv unmöglich, und der Turmring pulsiert
|
||||
sichtbar nicht.
|
||||
|
||||
Reference in New Issue
Block a user