Simplify Match Limit Checks

Seems like a ~1.25% speedup.
This commit is contained in:
W. Felix Handte 2020-09-04 00:31:00 -04:00
parent 06d240b8a7
commit ed43832770

View File

@ -535,8 +535,7 @@ void ZSTD_dedicatedDictSearch_lazy_loadDictionary(ZSTD_matchState_t* ms, const B
if (count == cacheSize) {
for (count = 0; count < chainLimit;) {
if (i < minChain) {
countBeyondMinChain++;
if (countBeyondMinChain > cacheSize) {
if (!i || countBeyondMinChain++ > cacheSize) {
/* only allow pulling `cacheSize` number of entries
* into the cache or chainTable beyond `minChain`,
* to replace the entries pulled out of the
@ -688,10 +687,13 @@ size_t ZSTD_HcFindBestMatch_generic (
matchIndex = dms->hashTable[ddsIdx + ddsAttempt];
match = ddsBase + matchIndex;
if (matchIndex < ddsLowestIndex) {
if (!matchIndex) {
return ml;
}
/* guaranteed by table construction */
(void)ddsLowestIndex;
assert(matchIndex >= ddsLowestIndex);
assert(match+4 <= ddsEnd);
if (MEM_read32(match) == MEM_read32(ip)) {
/* assumption : matchIndex <= dictLimit-4 (by table construction) */
@ -727,10 +729,8 @@ size_t ZSTD_HcFindBestMatch_generic (
matchIndex = dms->chainTable[chainIndex];
match = ddsBase + matchIndex;
if (matchIndex < ddsLowestIndex) {
break;
}
/* guaranteed by table construction */
assert(matchIndex >= ddsLowestIndex);
assert(match+4 <= ddsEnd);
if (MEM_read32(match) == MEM_read32(ip)) {
/* assumption : matchIndex <= dictLimit-4 (by table construction) */