Atomic-Pipe
view release on metacpan or search on metacpan
multi-part message back into a single atomic burst, which avoids that
per-message protocol overhead entirely. As a result, on workloads
dominated by larger-than-PIPE_BUF messages, compression is often much
faster end-to-end than no compression, even after accounting for the
CPU cost of compress/decompress.
The kernel pipe buffer size (see "resize") does not affect this --
fragmentation is keyed on the POSIX PIPE_BUF atomic-write threshold,
not on the buffer capacity.
Benchmark: streaming JSON objects
Numbers below are from bench/zstd_compression.pl in the distribution.
The workload is a synthetic but representative stream of JSON log/event
objects sent in mixed-data mode via write_message. The corpus is
generated once and reused across all runs; sizes are JSON-encoded byte
counts.
Two corpora were measured:
Small JSON (10 MB total, 11785 objects)
them. Compressing the payload first frequently collapses a multi-part message
back into a single atomic burst, which avoids that per-message protocol
overhead entirely. As a result, on workloads dominated by larger-than-PIPE\_BUF
messages, compression is often **much faster end-to-end than no compression**,
even after accounting for the CPU cost of compress/decompress.
The kernel pipe buffer size (see ["resize"](#resize)) does **not** affect this --
fragmentation is keyed on the POSIX `PIPE_BUF` atomic-write threshold, not on
the buffer capacity.
### Benchmark: streaming JSON objects
Numbers below are from `bench/zstd_compression.pl` in the distribution. The
workload is a synthetic but representative stream of JSON log/event objects
sent in mixed-data mode via `write_message`. The corpus is generated once and
reused across all runs; sizes are JSON-encoded byte counts.
Two corpora were measured:
- Small JSON (10 MB total, 11785 objects)
lib/Atomic/Pipe.pm view on Meta::CPAN
them. Compressing the payload first frequently collapses a multi-part message
back into a single atomic burst, which avoids that per-message protocol
overhead entirely. As a result, on workloads dominated by larger-than-PIPE_BUF
messages, compression is often B<much faster end-to-end than no compression>,
even after accounting for the CPU cost of compress/decompress.
The kernel pipe buffer size (see L</resize>) does B<not> affect this --
fragmentation is keyed on the POSIX C<PIPE_BUF> atomic-write threshold, not on
the buffer capacity.
=head3 Benchmark: streaming JSON objects
Numbers below are from C<bench/zstd_compression.pl> in the distribution. The
workload is a synthetic but representative stream of JSON log/event objects
sent in mixed-data mode via C<write_message>. The corpus is generated once and
reused across all runs; sizes are JSON-encoded byte counts.
Two corpora were measured:
=over 4
( run in 0.793 second using v1.01-cache-2.11-cpan-140bd7fdf52 )