made level 10 a bit faster
at the expense of a little bit of compression ratio. Now speed is intermediate on calgary corpus : 25 - 12 - 8 - 3
This commit is contained in:
parent
a6fd0f9d0b
commit
89b9f026c9
13
lib/lz4hc.c
13
lib/lz4hc.c
@ -182,7 +182,7 @@ FORCE_INLINE int LZ4HC_InsertAndGetWiderMatch (
|
||||
const BYTE* const dictBase = hc4->dictBase;
|
||||
int const delta = (int)(ip-iLowLimit);
|
||||
int nbAttempts = maxNbAttempts;
|
||||
U32 matchIndex;
|
||||
U32 matchIndex;
|
||||
|
||||
|
||||
/* First Match */
|
||||
@ -192,16 +192,17 @@ FORCE_INLINE int LZ4HC_InsertAndGetWiderMatch (
|
||||
while ((matchIndex>=lowLimit) && (nbAttempts)) {
|
||||
nbAttempts--;
|
||||
if (matchIndex >= dictLimit) {
|
||||
const BYTE* matchPtr = base + matchIndex;
|
||||
const BYTE* const matchPtr = base + matchIndex;
|
||||
if (*(iLowLimit + longest) == *(matchPtr - delta + longest)) {
|
||||
if (LZ4_read32(matchPtr) == LZ4_read32(ip)) {
|
||||
int mlt = MINMATCH + LZ4_count(ip+MINMATCH, matchPtr+MINMATCH, iHighLimit);
|
||||
int back = 0;
|
||||
|
||||
while ((ip+back > iLowLimit)
|
||||
&& (matchPtr+back > lowPrefixPtr)
|
||||
&& (ip[back-1] == matchPtr[back-1]))
|
||||
while ( (ip+back > iLowLimit)
|
||||
&& (matchPtr+back > lowPrefixPtr)
|
||||
&& (ip[back-1] == matchPtr[back-1])) {
|
||||
back--;
|
||||
}
|
||||
|
||||
mlt -= back;
|
||||
|
||||
@ -548,7 +549,7 @@ static int LZ4HC_compress_generic (
|
||||
if (limit == limitedDestSize) cLevel = 10;
|
||||
switch (cLevel) {
|
||||
case 10:
|
||||
return LZ4HC_compress_hashChain(ctx, src, dst, srcSizePtr, dstCapacity, 1 << (15-1), limit);
|
||||
return LZ4HC_compress_hashChain(ctx, src, dst, srcSizePtr, dstCapacity, 1 << 12, limit);
|
||||
case 11:
|
||||
ctx->searchNum = LZ4HC_getSearchNum(cLevel);
|
||||
return LZ4HC_compress_optimal(ctx, src, dst, *srcSizePtr, dstCapacity, limit, 128, 0);
|
||||
|
Loading…
Reference in New Issue
Block a user