From fc2afcfa646b5d18185f8829f65ec7938c85953a Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Fri, 6 Nov 2015 15:40:14 +0100 Subject: [PATCH] small Cspeed increase --- lib/zstdhc.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/zstdhc.c b/lib/zstdhc.c index d9b587b96..d84c19987 100644 --- a/lib/zstdhc.c +++ b/lib/zstdhc.c @@ -647,7 +647,11 @@ size_t ZSTD_HC_compressBlock_lazy_generic(ZSTD_HC_CCtx* ctx, offset_2 = offset_1; matchLength = searchMax(ctx, ip, iend, &offset, maxSearches, mls); - if (!matchLength) { ip++; continue; } + if (!matchLength) + { + ip += ((ip-anchor) >> g_searchStrength) + 1; /* jump faster over incompressible sections */ + continue; + } /* let's try to find a better solution */ start = ip; @@ -793,7 +797,11 @@ size_t ZSTD_HC_compressBlock_greedy(ZSTD_HC_CCtx* ctx, void* dst, size_t maxDstS { size_t offset=999999; size_t matchLength = ZSTD_HC_HcFindBestMatch_selectMLS(ctx, ip, iend, &offset, maxSearches, mls); - if (!matchLength) { ip++; continue; } + if (!matchLength) + { + ip += ((ip-anchor) >> g_searchStrength) + 1; /* jump faster over incompressible sections */ + continue; + } while ((ip>anchor) && (ip-offset>ctx->base) && (ip[-1] == ip[-1-offset])) { ip--; } /* catch up */ /* store sequence */ {