]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
only split full blocks
authorYann Collet <cyan@fb.com>
Thu, 17 Oct 2024 21:46:47 +0000 (14:46 -0700)
committerYann Collet <cyan@fb.com>
Thu, 17 Oct 2024 21:46:47 +0000 (14:46 -0700)
short term simplification

lib/compress/zstd_compress.c

index 25a11f070a742e27b24e6734f502105ece688ac0..11c8ceabd526a8ab99f5c487997734c75cb0a0bb 100644 (file)
@@ -4491,10 +4491,15 @@ static void ZSTD_overflowCorrectIfNeeded(ZSTD_matchState_t* ms,
 
 static size_t ZSTD_optimalBlockSize(const void* src, size_t srcSize, size_t blockSizeMax, ZSTD_strategy strat, S64 savings)
 {
-    if (strat >= ZSTD_btlazy2)
-        return ZSTD_splitBlock_4k(src, srcSize, blockSizeMax);
+    /* note: we currenly only split full blocks (128 KB)
+     * and when there is more than 128 KB input remaining
+     */
     if (srcSize <= 128 KB || blockSizeMax < 128 KB)
         return MIN(srcSize, blockSizeMax);
+    /* dynamic splitting has a cpu cost for analysis,
+     * due to that cost it's only used for btlazy2+ strategies */
+    if (strat >= ZSTD_btlazy2)
+        return ZSTD_splitBlock_4k(src, srcSize, blockSizeMax);
     /* blind split strategy
      * no cpu cost, but can over-split homegeneous data.
      * heuristic, tested as being "generally better".