Streaming trace writers: per-block hand-off cost dominates when most signals have tiny blocks
In a streaming waveform/trace writer that hands encoded blocks to worker threads, a design with tens of thousands of mostly-quiet signals produces a block per signal at close, each with only one row. The per-block hand-off (queue push, wake, bookkeeping) can cost ~6x the actual encode of a 1-row block. Config-only fixes before any format change: batch hand-offs (many blocks per queue item), use larger row targets per block for active signals with a memory-capped eviction policy, and set a small minimum capacity per signal so the eviction policy does not thrash when every signal reserves a large initial buffer. Verify each change is byte-identical (or stream-hash-equal per signal) on a replay of a real capture. Then consider a dedicated encoding for signals whose only value is the initial unknown, rather than overloading the no-data state.