From: inikep Date: Wed, 16 Mar 2016 10:40:09 +0000 (+0100) Subject: ZSTD_REP_NUM X-Git-Tag: v0.6.0^2~17^2~16^2~8^2~24 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4569667c857ffaa9f68484cb0e9eee9b5d1cab31;p=thirdparty%2Fzstd.git ZSTD_REP_NUM --- diff --git a/lib/zstd_compress.c b/lib/zstd_compress.c index 2ee25cc93..60bbd8444 100644 --- a/lib/zstd_compress.c +++ b/lib/zstd_compress.c @@ -627,8 +627,10 @@ size_t ZSTD_compressSequences(ZSTD_CCtx* zc, /* CTable for Offset codes */ { /* create Offset codes */ size_t i; for (i=0; ilitLength++) = (BYTE)litLength; /* match offset */ - *(seqStorePtr->offset++) = (U32)offsetCode; + *(seqStorePtr->offset++) = (U32)offsetCode + ZSTD_REP_NUM - 1; /* match Length */ if (matchCode >= MaxML) { diff --git a/lib/zstd_decompress.c b/lib/zstd_decompress.c index 60136b615..9bbbd5c1c 100644 --- a/lib/zstd_decompress.c +++ b/lib/zstd_decompress.c @@ -657,8 +657,10 @@ static void ZSTD_decodeSequence(seq_t* seq, seqState_t* seqState, const U32 mls) offset = offsetPrefix[offsetCode] + BIT_readBits(&(seqState->DStream), nbBits); if (MEM_32bits()) BIT_reloadDStream(&(seqState->DStream)); if (offsetCode==0) offset = prevOffset; /* repcode, cmove */ + else offset -= ZSTD_REP_NUM - 1; if (offsetCode | !litLength) seqState->prevOffset = seq->offset; /* cmove */ FSE_decodeSymbol(&(seqState->stateOffb), &(seqState->DStream)); /* update */ +// printf("offsetCode=%d nbBits=%d offset=%d\n", offsetCode, nbBits, (int)offset); fflush(stdout); } /* Literal length update */ diff --git a/lib/zstd_internal.h b/lib/zstd_internal.h index de78bb6f9..cccd801f5 100644 --- a/lib/zstd_internal.h +++ b/lib/zstd_internal.h @@ -66,6 +66,7 @@ #define ZSTD_OPT_NUM (1<<12) #define ZSTD_DICT_MAGIC 0xEC30A435 +#define ZSTD_REP_NUM 4 #define KB *(1 <<10) #define MB *(1 <<20) diff --git a/programs/bench.c b/programs/bench.c index e0db60e5b..fd4f9b547 100644 --- a/programs/bench.c +++ b/programs/bench.c @@ -89,7 +89,6 @@ #endif #define NBLOOPS 3 -#define TIMELOOP 2500 #define KB *(1 <<10) #define MB *(1 <<20) @@ -281,6 +280,7 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize, } } } /* warmimg up memory */ + int timeloop = additionalParam; //2500; ZSTD_setAdditionalParam(refCtx, additionalParam); RDG_genBuffer(compressedBuffer, maxCompressedSize, 0.10, 0.50, 1); @@ -305,7 +305,7 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize, milliTime = BMK_GetMilliStart(); while (BMK_GetMilliStart() == milliTime); milliTime = BMK_GetMilliStart(); - while (BMK_GetMilliSpan(milliTime) < TIMELOOP) { + while (BMK_GetMilliSpan(milliTime) < timeloop) { ZSTD_compressBegin_advanced(refCtx, dictBuffer, dictBufferSize, ZSTD_getParams(cLevel, MAX(dictBufferSize, largestBlockSize))); for (blockNb=0; blockNb