Problem
The donor enables a row-based match finder for greedy/lazy families and resolves it dynamically from parameters (see zstd_compress.c). Our encoder currently uses simple hash, dfast, and hash-chain paths only, without a row-based matcher backend.
That keeps low/mid compression levels behind donor on speed for common corpora.
Goal
Add a row-based match finder backend in Rust for Fastest/Default-oriented levels, with level-parameter routing similar to donor strategy selection.
Implementation plan
- Add a RowMatch backend in zstd/src/encoding/match_generator.rs with dedicated table layout and probe logic.
- Integrate backend selection into level parameter resolution so target levels can route to RowMatch.
- Preserve current backends as fallback and for levels where RowMatch is not beneficial.
- Add focused benchmarks for small and mid blocks where row match finder should improve throughput.
- Validate ratio and interoperability against C zstd on the existing bench matrix.
Acceptance criteria
Dependencies
Estimate
3d
Problem
The donor enables a row-based match finder for greedy/lazy families and resolves it dynamically from parameters (see zstd_compress.c). Our encoder currently uses simple hash, dfast, and hash-chain paths only, without a row-based matcher backend.
That keeps low/mid compression levels behind donor on speed for common corpora.
Goal
Add a row-based match finder backend in Rust for Fastest/Default-oriented levels, with level-parameter routing similar to donor strategy selection.
Implementation plan
Acceptance criteria
Dependencies
Estimate
3d