removed the ip++ at the beginning of block

The first byte used to be skipped
to avoid a infinite self-comparison.
This is no longer necessary, since init() ensures that index starts at 64K.

The first byte is also useless to search when each block is independent,
but it's no longer the case when blocks are linked.

Removing the first-byte-skip saves
about 10 bytes / MB on files compressed with -BD4 (linked blocks 64Kb),
which feels correct as each MB has 16 blocks of 64KB.
This commit is contained in:
Yann Collet 2017-11-07 17:37:31 -08:00
parent 71fd08c17d
commit 897f5e9834
2 changed files with 0 additions and 3 deletions

View File

@ -429,8 +429,6 @@ static int LZ4HC_compress_hashChain (
if (limit == limitedDestSize) oend -= LASTLITERALS; /* Hack for support limitations LZ4 decompressor */ if (limit == limitedDestSize) oend -= LASTLITERALS; /* Hack for support limitations LZ4 decompressor */
if (inputSize < LZ4_minLength) goto _last_literals; /* Input too small, no compression (all literals) */ if (inputSize < LZ4_minLength) goto _last_literals; /* Input too small, no compression (all literals) */
ip++;
/* Main Loop */ /* Main Loop */
while (ip < mflimit) { while (ip < mflimit) {
ml = LZ4HC_InsertAndFindBestMatch (ctx, ip, matchlimit, (&ref), maxNbAttempts); ml = LZ4HC_InsertAndFindBestMatch (ctx, ip, matchlimit, (&ref), maxNbAttempts);

View File

@ -127,7 +127,6 @@ static int LZ4HC_compress_optimal (
/* init */ /* init */
DEBUGLOG(5, "LZ4HC_compress_optimal"); DEBUGLOG(5, "LZ4HC_compress_optimal");
if (sufficient_len >= LZ4_OPT_NUM) sufficient_len = LZ4_OPT_NUM-1; if (sufficient_len >= LZ4_OPT_NUM) sufficient_len = LZ4_OPT_NUM-1;
ip++;
/* Main Loop */ /* Main Loop */
assert(ip - anchor < LZ4_MAX_INPUT_SIZE); assert(ip - anchor < LZ4_MAX_INPUT_SIZE);