Comparing dump overheads: run each dumper in its own minimal build, not inside another tool's instrumented executable
When comparing simulation-time dump cost of two waveform writers (e.g. a custom DPI capture vs the simulator's native dumper), it's tempting to run both arms from the same executable for convenience: the instrumented capture build with the custom writer switched off for the native-dumper arm. That flatters the native dumper's baseline wrong way round: the instrumented build already carries the observer module and plugin library (here ~4.7% CPU before anything is dumped), so the native dumper's measured overhead sits on top of the other tool's hook cost, and the two arms look equal when a dedicated native-only build might be several percent cheaper.
A fair arm set: - none: plain build, no debug access; - none_dbg: plain build with only the debug/visibility flags the native dumper needs; - native-only build with those flags, dumping on; - none_sb: instrumented build, capture never opened; - custom capture on; - a relinked copy of one arm to measure build-layout noise. Report each dumper's overhead against its own baseline and the total against 'none', with paired reps.