Skip to content

test: validate stream-opened struct codec cores - #725

Closed
SunSi12138 wants to merge 20 commits into
devfrom
issue-720-struct-core-evidence
Closed

SunSi12138 wants to merge 20 commits into
devfrom
issue-720-struct-core-evidence

Conversation

@SunSi12138

Copy link
Copy Markdown
Owner

Purpose

Continue #720 from the merged Phase A production baseline (dev@172a4bab78ba117cf66832a234c7495076ff7961).

This PR is benchmark/evidence only. It does not change production Codec ABI, registry/provider behavior, generated ABI, or streaming runtime behavior.

Candidate being validated

Keep the existing class Codec as the public/registry-facing shell, but give it a readonly struct core. At stream start, open that concrete core exactly once and run the whole N-item loop as Pump<T,TCore>.

The matrix separates:

  • current post-perf: hoist streaming codec capability checks to stream scope #724 production-style class/interface loop;
  • class shell forwarding to struct core while still interface-called per item;
  • one open per stream + concrete struct core passed by value;
  • one open per stream + concrete struct core passed by in;
  • statically-known direct core entry as the no-opener upper bound.

Coverage

  • int / long / Guid / 16B / 64B / 256B unmanaged payloads;
  • 1k / 10k / 100k streams;
  • 1 / 8 / 64 item tiny streams to measure opener amortization;
  • exact-sized serialize / unsized serialize / deserialize;
  • flat zero-state core;
  • generated-like 64B payload whose struct core retains four child IRpcCodec<Payload16> references;
  • Dynamic PGO disabled and enabled;
  • JIT disassembly;
  • NativeAOT performance, native symbols, and binary size;
  • by-value vs in TCore copy behavior.

Relates to #720.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant