Prefetch First Batch of Match Positions; +11% Speed in Level 5 w/ 1 Dict

This commit is contained in:
W. Felix Handte 2020-08-18 13:30:41 -04:00
parent df386b3d8d
commit 5e91ae27eb

View File

@ -574,8 +574,7 @@ size_t ZSTD_HcFindBestMatch_generic (
const U32 ddsIndexDelta = dictLimit - ddsSize;
const U32 ddsMinChain = ddsSize > ddsChainSize ? ddsSize - ddsChainSize : 0;
const U32 bucketSize = (1 << DD_BLOG);
U32 attemptNb = 1;
U32 attemptNb;
matchIndex = dms->hashTable[ddsIdx];
@ -583,7 +582,11 @@ size_t ZSTD_HcFindBestMatch_generic (
if (!matchIndex)
return ml;
for ( ; (matchIndex>ddsLowestIndex) & (nbAttempts>0) ; nbAttempts--, attemptNb++) {
for (attemptNb = 0; attemptNb < bucketSize; attemptNb++) {
PREFETCH_L1(ddsBase + dms->hashTable[ddsIdx + attemptNb]);
}
for (attemptNb = 1; (matchIndex>ddsLowestIndex) & (nbAttempts>0) ; nbAttempts--, attemptNb++) {
size_t currentMl=0;
const BYTE* const match = ddsBase + matchIndex;
assert(match+4 <= ddsEnd);