Skip to content

bench/boundary: the host-boundary microbench - #56

Merged
lann merged 2 commits into
mainfrom
bench-boundary
Aug 10, 2026
Merged

bench/boundary: the host-boundary microbench#56
lann merged 2 commits into
mainfrom
bench-boundary

Conversation

@lann

@lann lann commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator

The standing instrument behind #17's jco-vs-deltic baseline, #54's lift-throughput finding, and #8's cost ledger — a wit-bindgen guest looping echo-shaped host imports, all lanes on the same engine (plain node = callback ABI, no flag; jco + deltic-jspi share the JSPI flag), so what the clock sees is lift/lower + dispatch + suspension machinery, not engine or harness deltas.

Baseline (README): deltic callback sustains 0.4–1.2 M async crossings/s; jco's async import path costs ~3 ms/call flat (sync path healthy — it's the task loop, i.e. the lann/jco#11 machinery); #54's per-element list<u8> lift caps host→guest at ~22 MB/s vs ~6.4 GB/s the other way; jspi runs ~2× behind callback on deferred settlements (for #8's ledger).

Manual instrument, not a gate — numbers are box-relative; nothing joins gates/CI.

The standing instrument behind #17's jco-vs-deltic baseline, #54's
lift-throughput finding, and #8's cost ledger: a wit-bindgen guest
looping echo-shaped host imports (send / recv / sync-lowered control,
immediate and microtask-settled host modes, 0 and 1200 B payloads),
driven on the SAME engine for every lane - plain node runs the callback
ABI with no flag; the jco lane and deltic's jspi mode share the JSPI
flag - so engine variables cancel and the clock sees lift/lower +
dispatch + suspension machinery.

just bench-boundary            # deltic lanes vs the CURRENT tree
just bench-boundary with-jco   # + the incumbent jco lane

The deltic lanes build the local embedder bundle and translator, so the
same lane tracked across commits is a boundary-perf regression sentinel
(the recv@1200 rows watch #54's fix). Baseline table and reading
recorded in bench/boundary/README.md; headline: deltic callback ABI
sustains 0.4-1.2M async crossings/s where jco's async import path costs
~3ms per call flat, and #54's per-element list<u8> lift caps host->guest
payloads at ~22 MB/s against ~6.4 GB/s the other way.

Manual instrument, not a gate (numbers are box-relative). The jco lane
pins the family's own toolchain tarballs + the vendored wrapper and
retires with the jco era.
@lann
lann enabled auto-merge August 10, 2026 21:49
@lann
lann disabled auto-merge August 10, 2026 21:49
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