[libzstd] Optimize ZSTD_insertBt1() for repetitive data #1635
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We would only skip at most 192 bytes at a time before this diff.
This was added to optimize long matches and skip the middle of the
match. However, it doesn't handle the case of repetitive data.
This patch keeps the optimization, but also handles repetitive data
by taking the max of the two return values.
Before:
After:
At level 19 with multithreading the compressed size of
silesia.tar
regresses 300 bytes, andenwik8
regresses 100 bytes. In single threaded modeenwik8
is also within 100 bytes, and I didn't testsilesia.tar
. The compression speed is not significantly effected.The regression tests show changes in the order of single digit number of bytes.
Fixes Issue #1634.