docs(performance): close modern runtime slice H
This commit is contained in:
parent
41c1a59392
commit
f1a8d36682
7 changed files with 179 additions and 27 deletions
|
|
@ -362,7 +362,7 @@ retained typed snapshots instead of arrays. Evidence:
|
|||
|
||||
## #239 — Inbound net path allocates 3-4 arrays/objects per packet
|
||||
|
||||
**Status:** OPEN
|
||||
**Status:** DONE — 2026-07-25, Modern Runtime Slice H-c
|
||||
**Severity:** LOW
|
||||
**Filed:** 2026-07-24
|
||||
**Component:** net
|
||||
|
|
@ -375,10 +375,15 @@ byte[], a second full copy into `Packet.BodyBytes`
|
|||
fragment count, which dominates during active play. The audit named only
|
||||
the outbound `ToArray()` copy.
|
||||
|
||||
**Root cause / status:** 2026-07-24 audit review finding. In scope for plan
|
||||
Slice H-c (requires the §0.3 freeze authorization); invariants pinned in
|
||||
the plan amendment (single outstanding receive, arrival order,
|
||||
ack-per-packet).
|
||||
**Resolution:** One cancellable pooled receive owner now preserves kernel
|
||||
arrival order while packet headers, optionals, checksum verification, and
|
||||
single-fragment dispatch borrow the queued datagram. Only multi-fragment state
|
||||
whose lifetime crosses datagrams is copied. Warm production decode allocates
|
||||
zero bytes; the 500,000-packet differential benchmark improved throughput
|
||||
8.666x and removed approximately 400 bytes per packet. Direct recurring sends
|
||||
also frame into caller storage with zero warmed allocation. Connected
|
||||
login/portal/dungeon/reconnect and exact graceful disconnect pass. Evidence:
|
||||
`docs/research/2026-07-25-slice-h-closeout.md`.
|
||||
|
||||
**Files:** `src/AcDream.Core.Net/NetClient.cs:63-78`;
|
||||
`src/AcDream.Core.Net/Packets/PacketCodec.cs:58,64`;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue