]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Include LDM tables size for CCtx size estimation where relevant
authorsenhuang42 <senhuang96@fb.com>
Mon, 19 Oct 2020 19:22:10 +0000 (15:22 -0400)
committersenhuang42 <senhuang96@fb.com>
Tue, 20 Oct 2020 13:21:30 +0000 (09:21 -0400)
lib/compress/zstd_compress.c

index 0bfaeec4f84b93c2c551ae1e59a4cfd0183166f0..5e7fd53749d7d27169d9e66b7a25b79d81a076d6 100644 (file)
@@ -209,6 +209,16 @@ static ZSTD_CCtx_params ZSTD_makeCCtxParamsFromCParams(
     /* should not matter, as all cParams are presumed properly defined */
     ZSTD_CCtxParams_init(&cctxParams, ZSTD_CLEVEL_DEFAULT);
     cctxParams.cParams = cParams;
+
+    if (cParams.strategy >= ZSTD_btopt && cParams.windowLog >= 27 && cctxParams.nbWorkers == 0) {
+        DEBUGLOG(4, "ZSTD_makeCCtxParamsFromCParams(): Including LDM into cctx params");
+        cctxParams.ldmParams.enableLdm = 1;
+        /* LDM is enabled by default for optimal parser and window size >= 128MB */
+        ZSTD_ldm_adjustParameters(&cctxParams.ldmParams, &cParams);
+        assert(cctxParams.ldmParams.hashLog >= cctxParams.ldmParams.bucketSizeLog);
+        assert(cctxParams.ldmParams.hashRateLog < 32);
+    }
+
     assert(!ZSTD_checkCParams(cParams));
     return cctxParams;
 }