]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Introduced new compression level settings
authorYann Collet <yann.collet.73@gmail.com>
Sat, 13 Feb 2016 01:07:24 +0000 (02:07 +0100)
committerYann Collet <yann.collet.73@gmail.com>
Sat, 13 Feb 2016 01:08:46 +0000 (02:08 +0100)
Changed position of parameter TargetLength

lib/zstd_compress.c
lib/zstd_opt.h
lib/zstd_static.h
programs/paramgrill.c

index 83337b901ec79386950e67fa04ab9688dbf55d62..ed42de61fbfbb7baa2b33a884c416b77dea63a47 100644 (file)
@@ -74,6 +74,7 @@ size_t ZSTD_compressBound(size_t srcSize) { return FSE_compressBound(srcSize) +
 /*-*************************************
 *  Sequence storage
 ***************************************/
+/** ZSTD_resetFreqs() : for opt variants */
 static void ZSTD_resetFreqs(seqStore_t* ssPtr)
 {
     unsigned u;
@@ -99,8 +100,6 @@ static void ZSTD_resetSeqStore(seqStore_t* ssPtr)
     ssPtr->litLength = ssPtr->litLengthStart;
     ssPtr->matchLength = ssPtr->matchLengthStart;
     ssPtr->dumps = ssPtr->dumpsStart;
-
-    ZSTD_resetFreqs(ssPtr);
 }
 
 
@@ -2261,122 +2260,109 @@ size_t ZSTD_compress(void* dst, size_t maxDstSize, const void* src, size_t srcSi
 
 /*-=====  Pre-defined compression levels  =====-*/
 
-#define ZSTD_MAX_CLEVEL 25
+#define ZSTD_MAX_CLEVEL 21
 unsigned ZSTD_maxCLevel(void) { return ZSTD_MAX_CLEVEL; }
 
 static const ZSTD_parameters ZSTD_defaultParameters[4][ZSTD_MAX_CLEVEL+1] = {
 {   /* "default" */
-    /*   SL,  W,  C,  H,  S,  L, strat */
-    { 0,  0, 18, 12, 12,  1,  4, ZSTD_fast    },  /* level  0 - never used */
-    { 0,  0, 19, 13, 14,  1,  7, ZSTD_fast    },  /* level  1 */
-    { 0,  0, 19, 15, 16,  1,  6, ZSTD_fast    },  /* level  2 */
-    { 0,  0, 20, 18, 20,  1,  6, ZSTD_fast    },  /* level  3 */
-    { 0,  0, 21, 19, 21,  1,  6, ZSTD_fast    },  /* level  4 */
-    { 0,  0, 20, 14, 18,  3,  5, ZSTD_greedy  },  /* level  5 */
-    { 0,  0, 20, 18, 19,  3,  5, ZSTD_greedy  },  /* level  6 */
-    { 0,  0, 21, 17, 20,  3,  5, ZSTD_lazy    },  /* level  7 */
-    { 0,  0, 21, 19, 20,  3,  5, ZSTD_lazy    },  /* level  8 */
-    { 0,  0, 21, 20, 20,  3,  5, ZSTD_lazy2   },  /* level  9 */
-    { 0,  0, 21, 19, 21,  4,  5, ZSTD_lazy2   },  /* level 10 */
-    { 0,  0, 22, 20, 22,  4,  5, ZSTD_lazy2   },  /* level 11 */ // 42498419
-    { 0,  0, 22, 20, 22,  5,  5, ZSTD_lazy2   },  /* level 12 */
-    { 0,  0, 22, 21, 22,  5,  5, ZSTD_lazy2   },  /* level 13 */
-    { 0,  0, 22, 22, 23,  5,  5, ZSTD_lazy2   },  /* level 14 */
-    { 0,  0, 23, 23, 23,  5,  5, ZSTD_lazy2   },  /* level 15 */
-    { 0,  0, 23, 21, 22,  5,  5, ZSTD_btlazy2 },  /* level 16 */ // 42113689
-    { 0,  0, 23, 24, 23,  4,  5, ZSTD_btlazy2 },  /* level 17 */
-    { 0,  0, 25, 24, 23,  5,  5, ZSTD_btlazy2 },  /* level 18 */
-    { 0,  0, 25, 26, 23,  5,  5, ZSTD_btlazy2 },  /* level 19 */
-    { 0, 12, 22, 20, 21,  3,  5, ZSTD_opt     },  /* level 20 */
-    { 0, 16, 23, 21, 22,  4,  4, ZSTD_opt     },  /* level 21 */
-    { 0, 32, 25, 25, 24,  5,  4, ZSTD_opt_bt  },  /* level 22 */
-    { 0, 64, 25, 26, 24,  6,  4, ZSTD_opt_bt  },  /* level 23 */
-    { 0,128, 26, 26, 25,  8,  4, ZSTD_opt_bt  },  /* level 24 */
-    { 0,256, 26, 27, 25, 10,  4, ZSTD_opt_bt  },  /* level 25 */
+    /* l,  W,  C,  H,  S,  L, SL, strat */
+    {  0,  0,  0,  0,  0,  0,  0, ZSTD_fast    },  /* level  0 - never used */
+    {  0, 19, 13, 14,  1,  7,  4, ZSTD_fast    },  /* level  1 */
+    {  0, 19, 15, 16,  1,  6,  4, ZSTD_fast    },  /* level  2 */
+    {  0, 20, 18, 20,  1,  6,  4, ZSTD_fast    },  /* level  3 */
+    {  0, 21, 19, 21,  1,  6,  4, ZSTD_fast    },  /* level  4 */
+    {  0, 20, 14, 18,  3,  5,  4, ZSTD_greedy  },  /* level  5 */
+    {  0, 20, 18, 19,  3,  5,  4, ZSTD_greedy  },  /* level  6 */
+    {  0, 21, 17, 20,  3,  5,  4, ZSTD_lazy    },  /* level  7 */
+    {  0, 21, 19, 20,  3,  5,  4, ZSTD_lazy    },  /* level  8 */
+    {  0, 21, 20, 20,  3,  5,  4, ZSTD_lazy2   },  /* level  9 */
+    {  0, 21, 19, 21,  4,  5,  4, ZSTD_lazy2   },  /* level 10 */
+    {  0, 22, 20, 22,  4,  5,  4, ZSTD_lazy2   },  /* level 11 */
+    {  0, 22, 20, 22,  5,  5,  4, ZSTD_lazy2   },  /* level 12 */
+    {  0, 22, 21, 22,  5,  5,  4, ZSTD_lazy2   },  /* level 13 */
+    {  0, 22, 22, 23,  5,  5,  4, ZSTD_lazy2   },  /* level 14 */
+    {  0, 23, 23, 23,  5,  5,  4, ZSTD_lazy2   },  /* level 15 */
+    {  0, 23, 21, 22,  5,  5,  4, ZSTD_btlazy2 },  /* level 16 */
+    {  0, 23, 24, 23,  4,  5,  4, ZSTD_btlazy2 },  /* level 17 */
+    {  0, 24, 25, 24,  4,  4, 24, ZSTD_opt_bt  },  /* level 18 */
+    {  0, 25, 25, 24,  5,  4, 40, ZSTD_opt_bt  },  /* level 19 */
+    {  0, 26, 26, 25,  8,  4,256, ZSTD_opt_bt  },  /* level 20 */
+    {  0, 26, 27, 25, 10,  4,256, ZSTD_opt_bt  },  /* level 21 */
 },
 {   /* for srcSize <= 256 KB */
     /*    SL,  W,  C,  H,  S,  L, strat */
-    {  0,  0, 18, 13, 14,  1,  7, ZSTD_fast    },  /* level  0 - never used */
-    {  0,  0, 18, 14, 15,  1,  6, ZSTD_fast    },  /* level  1 */
-    {  0,  0, 18, 14, 15,  1,  5, ZSTD_fast    },  /* level  2 */
-    {  0,  0, 18, 12, 15,  3,  4, ZSTD_greedy  },  /* level  3 */
-    {  0,  0, 18, 13, 15,  4,  4, ZSTD_greedy  },  /* level  4 */
-    {  0,  0, 18, 14, 15,  5,  4, ZSTD_greedy  },  /* level  5 */
-    {  0,  0, 18, 13, 15,  4,  4, ZSTD_lazy    },  /* level  6 */
-    {  0,  0, 18, 14, 16,  5,  4, ZSTD_lazy    },  /* level  7 */
-    {  0,  0, 18, 15, 16,  6,  4, ZSTD_lazy    },  /* level  8 */
-    {  0,  0, 18, 15, 15,  7,  4, ZSTD_lazy    },  /* level  9 */
-    {  0,  0, 18, 16, 16,  7,  4, ZSTD_lazy    },  /* level 10 */
-    {  0,  0, 18, 16, 16,  8,  4, ZSTD_lazy    },  /* level 11 */
-    {  0,  0, 18, 17, 16,  8,  4, ZSTD_lazy    },  /* level 12 */
-    {  0,  0, 18, 17, 16,  9,  4, ZSTD_lazy    },  /* level 13 */
-    {  0,  0, 18, 18, 16,  9,  4, ZSTD_lazy    },  /* level 14 */
-    {  0,  0, 18, 17, 17,  9,  4, ZSTD_lazy2   },  /* level 15 */
-    {  0,  0, 18, 18, 18,  9,  4, ZSTD_lazy2   },  /* level 16 */
-    {  0,  0, 18, 18, 18, 10,  4, ZSTD_lazy2   },  /* level 17 */
-    {  0,  0, 18, 18, 18, 11,  4, ZSTD_lazy2   },  /* level 18 */
-    {  0,  0, 18, 18, 18, 12,  4, ZSTD_lazy2   },  /* level 19 */
-    {  0,  0, 18, 18, 18, 13,  4, ZSTD_lazy2   },  /* level 20 */
-    {  0,  0, 18, 18, 18, 10,  4, ZSTD_lazy2   },  /* level ??? */
-    {  0,  0, 18, 18, 18, 11,  4, ZSTD_lazy2   },  /* level ??? */
-    {  0,  0, 18, 18, 18, 12,  4, ZSTD_lazy2   },  /* level ??? */
-    {  0,  0, 18, 18, 18, 13,  4, ZSTD_lazy2   },  /* level ??? */
+    {    0, 18, 13, 14,  1,  7, 4, ZSTD_fast    },  /* level  0 - never used */
+    {    0, 18, 14, 15,  1,  6, 4, ZSTD_fast    },  /* level  1 */
+    {    0, 18, 14, 15,  1,  5, 4, ZSTD_fast    },  /* level  2 */
+    {    0, 18, 12, 15,  3,  4, 4, ZSTD_greedy  },  /* level  3 */
+    {    0, 18, 13, 15,  4,  4, 4, ZSTD_greedy  },  /* level  4 */
+    {    0, 18, 14, 15,  5,  4, 4, ZSTD_greedy  },  /* level  5 */
+    {    0, 18, 13, 15,  4,  4, 4, ZSTD_lazy    },  /* level  6 */
+    {    0, 18, 14, 16,  5,  4, 4, ZSTD_lazy    },  /* level  7 */
+    {    0, 18, 15, 16,  6,  4, 4, ZSTD_lazy    },  /* level  8 */
+    {    0, 18, 15, 15,  7,  4, 4, ZSTD_lazy    },  /* level  9 */
+    {    0, 18, 16, 16,  7,  4, 4, ZSTD_lazy    },  /* level 10 */
+    {    0, 18, 16, 16,  8,  4, 4, ZSTD_lazy    },  /* level 11 */
+    {    0, 18, 17, 16,  8,  4, 4, ZSTD_lazy    },  /* level 12 */
+    {    0, 18, 17, 16,  9,  4, 4, ZSTD_lazy    },  /* level 13 */
+    {    0, 18, 18, 16,  9,  4, 4, ZSTD_lazy    },  /* level 14 */
+    {    0, 18, 17, 17,  9,  4, 4, ZSTD_lazy2   },  /* level 15 */
+    {    0, 18, 18, 18,  9,  4, 4, ZSTD_lazy2   },  /* level 16 */
+    {    0, 18, 18, 18, 10,  4, 4, ZSTD_lazy2   },  /* level 17 */
+    {    0, 18, 18, 18, 11,  4, 4, ZSTD_lazy2   },  /* level 18 */
+    {    0, 18, 18, 18, 12,  4, 4, ZSTD_lazy2   },  /* level 19 */
+    {    0, 18, 18, 18, 13,  4, 4, ZSTD_lazy2   },  /* level 20 */
+    {    0, 18, 18, 18, 10,  4, 4, ZSTD_lazy2   },  /* level ??? */
 },
 {   /* for srcSize <= 128 KB */
     /*    W,  C,  H,  S,  L, strat */
-    { 0,  0, 17, 12, 12,  1,  4, ZSTD_fast    },  /* level  0 - never used */
-    { 0,  0, 17, 12, 13,  1,  6, ZSTD_fast    },  /* level  1 */
-    { 0,  0, 17, 14, 16,  1,  5, ZSTD_fast    },  /* level  2 */
-    { 0,  0, 17, 15, 17,  1,  5, ZSTD_fast    },  /* level  3 */
-    { 0,  0, 17, 13, 15,  2,  4, ZSTD_greedy  },  /* level  4 */
-    { 0,  0, 17, 15, 17,  3,  4, ZSTD_greedy  },  /* level  5 */
-    { 0,  0, 17, 14, 17,  3,  4, ZSTD_lazy    },  /* level  6 */
-    { 0,  0, 17, 16, 17,  4,  4, ZSTD_lazy    },  /* level  7 */
-    { 0,  0, 17, 16, 17,  4,  4, ZSTD_lazy2   },  /* level  8 */
-    { 0,  0, 17, 17, 16,  5,  4, ZSTD_lazy2   },  /* level  9 */
-    { 0,  0, 17, 17, 16,  6,  4, ZSTD_lazy2   },  /* level 10 */
-    { 0,  0, 17, 17, 16,  7,  4, ZSTD_lazy2   },  /* level 11 */
-    { 0,  0, 17, 17, 16,  8,  4, ZSTD_lazy2   },  /* level 12 */
-    { 0,  0, 17, 18, 16,  4,  4, ZSTD_btlazy2 },  /* level 13 */
-    { 0,  0, 17, 18, 16,  5,  4, ZSTD_btlazy2 },  /* level 14 */
-    { 0,  0, 17, 18, 16,  6,  4, ZSTD_btlazy2 },  /* level 15 */
-    { 0,  0, 17, 18, 16,  7,  4, ZSTD_btlazy2 },  /* level 16 */
-    { 0,  0, 17, 18, 16,  8,  4, ZSTD_btlazy2 },  /* level 17 */
-    { 0,  0, 17, 18, 16,  9,  4, ZSTD_btlazy2 },  /* level 18 */
-    { 0,  0, 17, 18, 16, 10,  4, ZSTD_btlazy2 },  /* level 19 */
-    { 0,  0, 17, 18, 18, 12,  4, ZSTD_btlazy2 },  /* level 20 */
-    { 0,  0, 17, 18, 16,  8,  4, ZSTD_btlazy2 },  /* level ??? */
-    { 0,  0, 17, 18, 16,  9,  4, ZSTD_btlazy2 },  /* level ??? */
-    { 0,  0, 17, 18, 16, 10,  4, ZSTD_btlazy2 },  /* level ??? */
-    { 0,  0, 17, 18, 18, 12,  4, ZSTD_btlazy2 },  /* level ??? */
+    {   0, 17, 12, 12,  1,  4, 4, ZSTD_fast    },  /* level  0 - never used */
+    {   0, 17, 12, 13,  1,  6, 4, ZSTD_fast    },  /* level  1 */
+    {   0, 17, 14, 16,  1,  5, 4, ZSTD_fast    },  /* level  2 */
+    {   0, 17, 15, 17,  1,  5, 4, ZSTD_fast    },  /* level  3 */
+    {   0, 17, 13, 15,  2,  4, 4, ZSTD_greedy  },  /* level  4 */
+    {   0, 17, 15, 17,  3,  4, 4, ZSTD_greedy  },  /* level  5 */
+    {   0, 17, 14, 17,  3,  4, 4, ZSTD_lazy    },  /* level  6 */
+    {   0, 17, 16, 17,  4,  4, 4, ZSTD_lazy    },  /* level  7 */
+    {   0, 17, 16, 17,  4,  4, 4, ZSTD_lazy2   },  /* level  8 */
+    {   0, 17, 17, 16,  5,  4, 4, ZSTD_lazy2   },  /* level  9 */
+    {   0, 17, 17, 16,  6,  4, 4, ZSTD_lazy2   },  /* level 10 */
+    {   0, 17, 17, 16,  5,  4, 8, ZSTD_opt     },  /* level 11 */
+    {   0, 17, 17, 16,  6,  4,12, ZSTD_opt     },  /* level 12 */
+    {   0, 17, 18, 16,  4,  4, 4, ZSTD_btlazy2 },  /* level 13 */
+    {   0, 17, 18, 16,  5,  4, 4, ZSTD_btlazy2 },  /* level 14 */
+    {   0, 17, 18, 16,  6,  4, 4, ZSTD_btlazy2 },  /* level 15 */
+    {   0, 17, 17, 16,  7,  4,16, ZSTD_opt     },  /* level 16 */
+    {   0, 17, 18, 16,  5,  4,20, ZSTD_opt_bt  },  /* level 17 */
+    {   0, 17, 18, 16,  6,  4,32, ZSTD_opt_bt  },  /* level 18 */
+    {   0, 17, 18, 16,  7,  4,64, ZSTD_opt_bt  },  /* level 19 */
+    {   0, 17, 18, 17,  9,  4,128, ZSTD_opt_bt  },  /* level 20 */
+    {   0, 17, 18, 17, 12,  4,256, ZSTD_opt_bt  },  /* level ??? */
 },
 {   /* for srcSize <= 16 KB */
     /*     W,  C,  H,  S,  L, strat */
-    {  0,  0,  0,  0,  0,  0,  0, ZSTD_fast    },  /* level  0 - never used */
-    {  0,  0, 14, 14, 14,  1,  4, ZSTD_fast    },  /* level  1 */
-    {  0,  0, 14, 14, 16,  1,  4, ZSTD_fast    },  /* level  2 */
-    {  0,  0, 14, 14, 14,  5,  4, ZSTD_greedy  },  /* level  3 */
-    {  0,  0, 14, 14, 14,  8,  4, ZSTD_greedy  },  /* level  4 */
-    {  0,  0, 14, 11, 14,  6,  4, ZSTD_lazy    },  /* level  5 */
-    {  0,  0, 14, 14, 13,  6,  5, ZSTD_lazy    },  /* level  6 */
-    {  0,  0, 14, 14, 14,  7,  6, ZSTD_lazy    },  /* level  7 */
-    {  0,  0, 14, 14, 14,  8,  4, ZSTD_lazy    },  /* level  8 */
-    {  0,  0, 14, 14, 15,  9,  4, ZSTD_lazy    },  /* level  9 */
-    {  0,  0, 14, 14, 15, 10,  4, ZSTD_lazy    },  /* level 10 */
-    {  0,  0, 14, 15, 15,  6,  4, ZSTD_btlazy2 },  /* level 11 */
-    {  0,  0, 14, 15, 15,  7,  4, ZSTD_btlazy2 },  /* level 12 */
-    {  0,  0, 14, 15, 15,  8,  4, ZSTD_btlazy2 },  /* level 13 */
-    {  0,  0, 14, 15, 15,  9,  4, ZSTD_btlazy2 },  /* level 14 */
-    {  0,  0, 14, 15, 15, 10,  4, ZSTD_btlazy2 },  /* level 15 */
-    {  0,  0, 14, 15, 15, 11,  4, ZSTD_btlazy2 },  /* level 16 */
-    {  0,  0, 14, 15, 15, 12,  4, ZSTD_btlazy2 },  /* level 17 */
-    {  0,  0, 14, 15, 15, 13,  4, ZSTD_btlazy2 },  /* level 18 */
-    {  0,  0, 14, 15, 15, 14,  4, ZSTD_btlazy2 },  /* level 19 */
-    {  0,  0, 14, 15, 15, 15,  4, ZSTD_btlazy2 },  /* level 20 */
-    {  0,  0, 14, 15, 15, 12,  4, ZSTD_btlazy2 },  /* level ??? */
-    {  0,  0, 14, 15, 15, 13,  4, ZSTD_btlazy2 },  /* level ??? */
-    {  0,  0, 14, 15, 15, 14,  4, ZSTD_btlazy2 },  /* level ??? */
-    {  0,  0, 14, 15, 15, 15,  4, ZSTD_btlazy2 },  /* level ??? */
+    {    0,  0,  0,  0,  0,  0, 4, ZSTD_fast    },  /* level  0 - never used */
+    {    0, 14, 14, 14,  1,  4, 4, ZSTD_fast    },  /* level  1 */
+    {    0, 14, 14, 16,  1,  4, 4, ZSTD_fast    },  /* level  2 */
+    {    0, 14, 14, 14,  5,  4, 4, ZSTD_greedy  },  /* level  3 */
+    {    0, 14, 14, 14,  8,  4, 4, ZSTD_greedy  },  /* level  4 */
+    {    0, 14, 11, 14,  6,  4, 4, ZSTD_lazy    },  /* level  5 */
+    {    0, 14, 14, 13,  6,  5, 4, ZSTD_lazy    },  /* level  6 */
+    {    0, 14, 14, 14,  7,  6, 4, ZSTD_lazy    },  /* level  7 */
+    {    0, 14, 14, 14,  8,  4, 4, ZSTD_lazy    },  /* level  8 */
+    {    0, 14, 14, 15,  9,  4, 4, ZSTD_lazy    },  /* level  9 */
+    {    0, 14, 14, 15, 10,  4, 4, ZSTD_lazy    },  /* level 10 */
+    {    0, 14, 15, 15,  6,  4, 4, ZSTD_btlazy2 },  /* level 11 */
+    {    0, 14, 15, 15,  7,  4, 4, ZSTD_btlazy2 },  /* level 12 */
+    {    0, 14, 15, 15,  8,  4, 4, ZSTD_btlazy2 },  /* level 13 */
+    {    0, 14, 15, 15,  9,  4, 4, ZSTD_btlazy2 },  /* level 14 */
+    {    0, 14, 15, 15, 10,  4, 4, ZSTD_btlazy2 },  /* level 15 */
+    {    0, 14, 15, 15, 11,  4, 4, ZSTD_btlazy2 },  /* level 16 */
+    {    0, 14, 15, 15, 12,  4, 4, ZSTD_btlazy2 },  /* level 17 */
+    {    0, 14, 15, 15, 13,  4, 4, ZSTD_btlazy2 },  /* level 18 */
+    {    0, 14, 15, 15, 14,  4, 4, ZSTD_btlazy2 },  /* level 19 */
+    {    0, 14, 15, 15, 15,  4, 4, ZSTD_btlazy2 },  /* level 20 */
+    {    0, 14, 15, 15, 12,  4, 4, ZSTD_btlazy2 },  /* level ??? */
 },
 };
 
index f3e9bd2252dd9fd58a1c4b2832a8765ada39875a..2512f803baff030061a4d3a13cbeb8dc71b42f77 100644 (file)
@@ -446,6 +446,7 @@ void ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx,
 
     /* init */
     ZSTD_resetSeqStore(seqStorePtr);
+    ZSTD_resetFreqs(seqStorePtr);
     if ((ip-base) < REPCODE_STARTVALUE) ip = base + REPCODE_STARTVALUE;
 
     /* Match Loop */
@@ -514,13 +515,9 @@ void ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx,
                 mlen++;
         }  }
 
-        if (last_pos < MINMATCH) {
-            // ip += ((ip-anchor) >> g_searchStrength) + 1;   /* jump faster over incompressible sections */
-            ip++; continue;
-        }
-
+        if (last_pos < MINMATCH) { ip++; continue; }
 
-        // check further positions
+         /* check further positions */
         for (skip_num = 0, cur = 1; cur <= last_pos; cur++) {
            size_t cur_rep;
            inr = ip + cur;
@@ -607,7 +604,7 @@ void ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx,
                 ZSTD_LOG_PARSER("%d: Found REP mlen=%d off=%d price=%d litlen=%d price[%d]=%d\n", (int)(inr-base), mlen, 0, price, litlen, cur - litlen, opt[cur - litlen].price);
 
                 do {
-                    if (cur + mlen > last_pos || price <= opt[cur + mlen].price) // || ((price == opt[cur + mlen].price) && (opt[cur].mlen == 1) && (cur != litlen))) // at equal price prefer REP instead of MATCH
+                    if (cur + mlen > last_pos || price <= opt[cur + mlen].price)
                         SET_PRICE(cur + mlen, mlen, 0, litlen, price);
                     mlen--;
                 } while (mlen >= MINMATCH);
@@ -665,7 +662,7 @@ void ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx,
         // printf("%d: start=%d best_mlen=%d best_off=%d cur=%d\n", (int)(ip - base), (int)(start - ip), (int)best_mlen, (int)best_off, cur);
 
         /* store sequence */
-_storeSequence: // cur, last_pos, best_mlen, best_off have to be set
+_storeSequence:   /* cur, last_pos, best_mlen, best_off have to be set */
         for (u = 1; u <= last_pos; u++)
             ZSTD_LOG_PARSER("%d: price[%d/%d]=%d off=%d mlen=%d litlen=%d rep=%d rep2=%d\n", (int)(ip-base+u), u, last_pos, opt[u].price, opt[u].off, opt[u].mlen, opt[u].litlen, opt[u].rep, opt[u].rep2);
         ZSTD_LOG_PARSER("%d: cur=%d/%d best_mlen=%d best_off=%d rep=%d\n", (int)(ip-base+cur), (int)cur, (int)last_pos, (int)best_mlen, (int)best_off, opt[cur].rep);
@@ -681,8 +678,7 @@ _storeSequence: // cur, last_pos, best_mlen, best_off have to be set
             opt[cur].off = best_off;
             best_mlen = mlen;
             best_off = offset;
-            if (mlen > cur)
-                break;
+            if (mlen > cur) break;
             cur -= mlen;
         }
 
@@ -736,7 +732,7 @@ _storeSequence: // cur, last_pos, best_mlen, best_off have to be set
             ZSTD_updatePrice(seqStorePtr, litLength, anchor, offset, mlen-MINMATCH);
             ZSTD_storeSeq(seqStorePtr, litLength, anchor, offset, mlen-MINMATCH);
             anchor = ip = ip + mlen;
-        }
+        }   /* for (cur=0; cur < last_pos; ) */
 
         /* check immediate repcode */
         while ( (anchor <= ilimit)
@@ -751,7 +747,7 @@ _storeSequence: // cur, last_pos, best_mlen, best_off have to be set
             ZSTD_storeSeq(seqStorePtr, 0, anchor, 0, best_mlen);
             anchor += best_mlen+MINMATCH;
             ip = anchor;
-            continue;   // faster when present ... (?)
+            continue;   /* faster when present ... (?) */
     }   }
 
     {   /* Last Literals */
@@ -798,6 +794,7 @@ void ZSTD_compressBlock_opt_extDict_generic(ZSTD_CCtx* ctx,
 
     /* init */
     ZSTD_resetSeqStore(seqStorePtr);
+    ZSTD_resetFreqs(seqStorePtr);
     if ((ip - prefixStart) < REPCODE_STARTVALUE) ip += REPCODE_STARTVALUE;
 
     /* Match Loop */
index f695ccc06b4a31b8943dc03c64258d4de896be5e..be30d6a633704210be171921710a9a946423954f 100644 (file)
@@ -71,12 +71,12 @@ typedef enum { ZSTD_fast, ZSTD_greedy, ZSTD_lazy, ZSTD_lazy2, ZSTD_btlazy2, ZSTD
 typedef struct
 {
     U64 srcSize;       /* optional : tells how much bytes are present in the frame. Use 0 if not known. */
-    U32 targetLength;  /* acceptable match size for optimal parser (only) : larger == more compression, slower */
     U32 windowLog;     /* largest match distance : larger == more compression, more memory needed during decompression */
     U32 contentLog;    /* full search segment : larger == more compression, slower, more memory (useless for fast) */
     U32 hashLog;       /* dispatch table : larger == faster, more memory */
     U32 searchLog;     /* nb of searches : larger == more compression, slower */
-    U32 searchLength;  /* size of matches : larger == faster decompression, sometimes less compression */
+    U32 searchLength;  /* match length searched : larger == faster decompression, sometimes less compression */
+    U32 targetLength;  /* acceptable match size for optimal parser (only) : larger == more compression, slower */
     ZSTD_strategy strategy;
 } ZSTD_parameters;
 
index 5ba3afab21247b100fe0104b648459e5d7956894..5e496b6b84e7236d467ad6a0384d4e2f2f40520d 100644 (file)
@@ -433,7 +433,7 @@ static void BMK_printWinners2(FILE* f, const winnerInfo_t* winners, size_t srcSi
     unsigned cLevel;
 
     fprintf(f, "\n /* Proposed configurations : */ \n");
-    fprintf(f, "    /* l,  W,  C,  H,  S,  L, strat */ \n");
+    fprintf(f, "    /* l,  W,  C,  H,  S,  L,  T, strat */ \n");
 
     for (cLevel=0; cLevel <= ZSTD_maxCLevel(); cLevel++)
         BMK_printWinner(f, cLevel, winners[cLevel].result, winners[cLevel].params, srcSize);