mirror of
https://github.com/facebook/zstd.git
synced 2025-10-27 00:03:37 -04:00
Track Step Rather than Recalculating (+0.5% Speed)
This commit is contained in:
parent
258c0623e1
commit
1bdf041071
@ -70,6 +70,9 @@ size_t ZSTD_compressBlock_doubleFast_singleSegment_generic(
|
|||||||
const BYTE* const ilimit = iend - HASH_READ_SIZE;
|
const BYTE* const ilimit = iend - HASH_READ_SIZE;
|
||||||
U32 offset_1=rep[0], offset_2=rep[1];
|
U32 offset_1=rep[0], offset_2=rep[1];
|
||||||
U32 offsetSaved = 0;
|
U32 offsetSaved = 0;
|
||||||
|
size_t step = 1;
|
||||||
|
const size_t kStepIncr = 1 << kSearchStrength;
|
||||||
|
const BYTE* nextStep = ip + kStepIncr;
|
||||||
|
|
||||||
DEBUGLOG(5, "ZSTD_compressBlock_doubleFast_singleSegment_generic");
|
DEBUGLOG(5, "ZSTD_compressBlock_doubleFast_singleSegment_generic");
|
||||||
|
|
||||||
@ -121,7 +124,14 @@ size_t ZSTD_compressBlock_doubleFast_singleSegment_generic(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ip += ((ip-anchor) >> kSearchStrength) + 1;
|
if (ip >= nextStep) {
|
||||||
|
PREFETCH_L1(ip + 64);
|
||||||
|
PREFETCH_L1(ip + 128);
|
||||||
|
step++;
|
||||||
|
nextStep += kStepIncr;
|
||||||
|
}
|
||||||
|
ip += step;
|
||||||
|
|
||||||
#if defined(__aarch64__)
|
#if defined(__aarch64__)
|
||||||
PREFETCH_L1(ip+256);
|
PREFETCH_L1(ip+256);
|
||||||
#endif
|
#endif
|
||||||
@ -190,6 +200,9 @@ _match_stored:
|
|||||||
anchor = ip;
|
anchor = ip;
|
||||||
continue; /* faster when present ... (?) */
|
continue; /* faster when present ... (?) */
|
||||||
} }
|
} }
|
||||||
|
|
||||||
|
step = 1;
|
||||||
|
nextStep = ip + kStepIncr;
|
||||||
} /* while (ip < ilimit) */
|
} /* while (ip < ilimit) */
|
||||||
|
|
||||||
/* save reps for next block */
|
/* save reps for next block */
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user