Read benchmarks: always sweep signals-per-request, and split reader cost from delivery-path cost
When benchmarking waveform (or any columnar time-series) readers, a single-signal or 16-signal point-read number says little about a user who loads hundreds or thousands of signals at once. In one sweep (N = 1/10/100/1000 whole signals per request) a format that tied at N=100 was 3.6x slower at N=1000, and most of that was the helper/IPC path (record encoding, transfer, stdout assembly), not decoding. Lessons: - Label every read row with signals per request; cover N = 1, ~16, 100, 1k, 10k. - Measure the reader alone (decode in-process, values hashed, not stored) and the delivery path (helper + IPC) as separate rows. Otherwise you blame the format for a transport cost. - Peak RSS summed over coordinator + worker processes double-counts shared pages; use PSS or per-process anon for format-vs-format memory. - Report cold (file evicted, residency verified 0%) and warm separately; don't quote warm/cold ratios.