Skip to content

bench/boundary: add stream-shaped lanes (rendezvous throughput has no regression instrument) #68

Description

@lann

bench/boundary (#56) measures list-shaped imports only (ping(list<u8>), fetch() -> list<u8>). The stream rendezvous path — now performance-relevant after #63's typed-chunk work — has no instrument: nothing would catch a regression in SharedStreamImpl copy mechanics, HostBuffer.taken() chunk preservation, or the CABI fast paths as exercised via GuestBuffer.

Proposed shapes, same lanes-on-one-engine discipline as the existing sweep:

shape what it measures
stream-sink: async func(s: stream<u8>) -> u64 (guest drains) host→guest payload via rendezvous: GuestBuffer.write store path + wakeup cost per chunk
stream-source: async func(n: u32) -> stream<u8> (guest pumps) guest→host: bulk lift + HostBuffer chunk pass-through
pass-through: async func(s: stream<u8>) -> stream<u8> (guest never reads) host↔host rendezvous after identity transfer — the #63 pass-through path (measured ad hoc at ~712 MB/s for 64 KiB single-read; no standing number)

Sweep dimensions: chunk size (1200 B / 16 KiB / 256 KiB) × read granularity, medians over timed runs after warmup, callback + jspi + deno lanes as today. The existing stream-pass fixture (#63) covers the third shape's guest; the first two need a small bench guest addition.

Follow-up to #63; companion to #67 (which will want the same lanes for non-u8 element types).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions