From 7cba253690b2cc5435717b326046ffbb87cc5998 Mon Sep 17 00:00:00 2001 From: Danielle Rozenblit Date: Mon, 13 Mar 2023 11:53:55 -0700 Subject: [PATCH] dynamic multiplier --- lib/compress/zstd_compress.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index f315d75eee2..9c8add576f8 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -4687,7 +4687,9 @@ static size_t ZSTD_loadDictionaryContent(ZSTD_matchState_t* ms, } /* If the dict is larger than we can reasonably index in our tables, only load the suffix. */ - { U32 maxDictSize = 8U * (1U << MIN(MAX(params->cParams.hashLog, params->cParams.chainLog), 28)); + { + U32 multiplierLog = params->cParams.strategy >= ZSTD_btultra ? 8 : 3; /* multiplier based on strategy */ + U32 maxDictSize = 1U << MIN(MAX(params->cParams.hashLog, params->cParams.chainLog) + multiplierLog, 31); if (srcSize > maxDictSize) { ip = iend - maxDictSize; src = ip;