From c7ae9ffde33a5e114fd71d0a46df75a6e007790b Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Mon, 19 Oct 2015 02:36:34 +0100 Subject: [PATCH] small decompression speed improvement --- lib/zstd.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/zstd.c b/lib/zstd.c index d4c17f33..63ae947d 100644 --- a/lib/zstd.c +++ b/lib/zstd.c @@ -114,7 +114,7 @@ static const U32 g_searchStrength = 8; #define Offbits 5 #define MaxML ((1<stateOffb), &(seqState->DStream)); + offsetCode = FSE_decodeSymbol(&(seqState->stateOffb), &(seqState->DStream)); /* <= maxOff, by table construction */ if (MEM_32bits()) BIT_reloadDStream(&(seqState->DStream)); nbBits = offsetCode - 1; if (offsetCode==0) nbBits = 0; /* cmove */ - offset = ((size_t)1 << (nbBits & ((sizeof(offset)*8)-1))) + BIT_readBits(&(seqState->DStream), nbBits); + offset = offsetPrefix[offsetCode] + BIT_readBits(&(seqState->DStream), nbBits); if (MEM_32bits()) BIT_reloadDStream(&(seqState->DStream)); if (offsetCode==0) offset = prevOffset; /* cmove */ }