SIGN IN SIGN UP

hashing/tests: benchmark the crc32c backends

Compares the google/crc32c and abseil backends of basic_crc32c across
the call patterns redpanda actually uses: bulk contiguous buffers, the
12 incremental integer extends of model::internal_header_only_crc,
fragmented iobufs, and a checksum fused with a copy (abseil's
MemcpyCrc32c, which has no wrapper equivalent and is benchmarked raw).
Both sides go through basic_crc32c, so each backend is measured
exactly as production calls it. Each fixture cross-checks that the two
backends agree before measuring.

Sizes are paired around google/crc32c's block tiers, which it enters
only at 3*336, 3*1360 and 3*5440 bytes. Whatever does not fill a tier
falls to a smaller one and finally to a serial loop, so its throughput
sawtooths by ~15% across a 64 byte change in length and a single size
can rank the two implementations either way.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
N
Noah Watkins committed
b8ede68f80e520e38ddfb499c4b00a97e85330fb
Parent: 0831090