]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
removed new huffman depth heuristic 3019/head
authorYann Collet <cyan@fb.com>
Wed, 26 Jan 2022 23:22:06 +0000 (15:22 -0800)
committerYann Collet <cyan@fb.com>
Wed, 26 Jan 2022 23:22:06 +0000 (15:22 -0800)
results are now identical to before this PR

lib/compress/huf_compress.c
tests/regression/results.csv

index b533573d15890ec7e039405cfe816ac13dd032ab..d1b98afdb4267a535c2a4bbc37b4c748848b7545 100644 (file)
@@ -143,7 +143,10 @@ typedef struct {
     S16 norm[HUF_TABLELOG_MAX+1];
 } HUF_CompressWeightsWksp;
 
-static size_t HUF_compressWeights(void* dst, size_t dstSize, const void* weightTable, size_t wtSize, void* workspace, size_t workspaceSize)
+static size_t
+HUF_compressWeights(void* dst, size_t dstSize,
+              const void* weightTable, size_t wtSize,
+                    void* workspace, size_t workspaceSize)
 {
     BYTE* const ostart = (BYTE*) dst;
     BYTE* op = ostart;
@@ -731,18 +734,6 @@ static void HUF_buildCTableFromTree(HUF_CElt* CTable, nodeElt const* huffNode, i
     CTable[0] = maxNbBits;
 }
 
-static size_t
-HUF_nbSymbolsTooLarge(const nodeElt* hnodes, U32 maxSymbolValue, U32 maxNbBits)
-{
-    size_t nbSTL = 0;
-    int s = (int)maxSymbolValue;
-    for ( ; s > 0; s-- ) {
-        if (hnodes[s].nbBits > maxNbBits) nbSTL++;
-        else break;
-    }
-    return nbSTL;
-}
-
 size_t
 HUF_buildCTable_wksp(HUF_CElt* CTable, const unsigned* count, U32 maxSymbolValue, U32 maxNbBits,
                      void* workSpace, size_t wkspSize)
@@ -771,16 +762,6 @@ HUF_buildCTable_wksp(HUF_CElt* CTable, const unsigned* count, U32 maxSymbolValue
     nonNullRank = HUF_buildTree(huffNode, maxSymbolValue);
 
     /* determine and enforce maxTableLog */
-    /* Loosen target when maxNbBits is already within limits.
-     * A harsh rebalancing can be bad for compression ratio
-     * while a mild one tends to be better */
-    while (maxNbBits < HUF_TABLELOG_DEFAULT) {
-        size_t const nbSTL = HUF_nbSymbolsTooLarge(huffNode, maxSymbolValue, maxNbBits);
-        #define HUF_NB_NODES_TO_FIX_MAX 32
-        if (nbSTL < HUF_NB_NODES_TO_FIX_MAX) /* heuristic */
-            break;
-        maxNbBits++;
-    }
     maxNbBits = HUF_setMaxHeight(huffNode, (U32)nonNullRank, maxNbBits);
     if (maxNbBits > HUF_TABLELOG_MAX) return ERROR(GENERIC);   /* check fit into table */
 
index f80da9f4e9c9647bdc31973a28ad135462e7dcd6..3385c50493123b4ac3a1a6258f2ae72514b43af9 100644 (file)
@@ -51,7 +51,7 @@ silesia,                            long distance mode,                 compress
 silesia,                            multithreaded,                      compress cctx,                      4842075
 silesia,                            multithreaded long distance mode,   compress cctx,                      4842075
 silesia,                            small window log,                   compress cctx,                      7082951
-silesia,                            small hash log,                     compress cctx,                      6525895
+silesia,                            small hash log,                     compress cctx,                      6526141
 silesia,                            small chain log,                    compress cctx,                      4912197
 silesia,                            explicit params,                    compress cctx,                      4794052
 silesia,                            uncompressed literals,              compress cctx,                      4842075
@@ -115,7 +115,7 @@ silesia,                            long distance mode,                 zstdcli,
 silesia,                            multithreaded,                      zstdcli,                            4842123
 silesia,                            multithreaded long distance mode,   zstdcli,                            4833785
 silesia,                            small window log,                   zstdcli,                            7095048
-silesia,                            small hash log,                     zstdcli,                            6525943
+silesia,                            small hash log,                     zstdcli,                            6526189
 silesia,                            small chain log,                    zstdcli,                            4912245
 silesia,                            explicit params,                    zstdcli,                            4795432
 silesia,                            uncompressed literals,              zstdcli,                            5120614
@@ -141,7 +141,7 @@ silesia.tar,                        long distance mode,                 zstdcli,
 silesia.tar,                        multithreaded,                      zstdcli,                            4854164
 silesia.tar,                        multithreaded long distance mode,   zstdcli,                            4845745
 silesia.tar,                        small window log,                   zstdcli,                            7100701
-silesia.tar,                        small hash log,                     zstdcli,                            6529041
+silesia.tar,                        small hash log,                     zstdcli,                            6529289
 silesia.tar,                        small chain log,                    zstdcli,                            4917022
 silesia.tar,                        explicit params,                    zstdcli,                            4820713
 silesia.tar,                        uncompressed literals,              zstdcli,                            5122571
@@ -255,7 +255,7 @@ silesia,                            long distance mode,                 advanced
 silesia,                            multithreaded,                      advanced one pass,                  4842075
 silesia,                            multithreaded long distance mode,   advanced one pass,                  4833737
 silesia,                            small window log,                   advanced one pass,                  7095000
-silesia,                            small hash log,                     advanced one pass,                  6525895
+silesia,                            small hash log,                     advanced one pass,                  6526141
 silesia,                            small chain log,                    advanced one pass,                  4912197
 silesia,                            explicit params,                    advanced one pass,                  4795432
 silesia,                            uncompressed literals,              advanced one pass,                  5120566
@@ -289,7 +289,7 @@ silesia.tar,                        long distance mode,                 advanced
 silesia.tar,                        multithreaded,                      advanced one pass,                  4854160
 silesia.tar,                        multithreaded long distance mode,   advanced one pass,                  4845741
 silesia.tar,                        small window log,                   advanced one pass,                  7100655
-silesia.tar,                        small hash log,                     advanced one pass,                  6528983
+silesia.tar,                        small hash log,                     advanced one pass,                  6529231
 silesia.tar,                        small chain log,                    advanced one pass,                  4917041
 silesia.tar,                        explicit params,                    advanced one pass,                  4806855
 silesia.tar,                        uncompressed literals,              advanced one pass,                  5122473
@@ -573,7 +573,7 @@ silesia,                            long distance mode,                 advanced
 silesia,                            multithreaded,                      advanced one pass small out,        4842075
 silesia,                            multithreaded long distance mode,   advanced one pass small out,        4833737
 silesia,                            small window log,                   advanced one pass small out,        7095000
-silesia,                            small hash log,                     advanced one pass small out,        6525895
+silesia,                            small hash log,                     advanced one pass small out,        6526141
 silesia,                            small chain log,                    advanced one pass small out,        4912197
 silesia,                            explicit params,                    advanced one pass small out,        4795432
 silesia,                            uncompressed literals,              advanced one pass small out,        5120566
@@ -607,7 +607,7 @@ silesia.tar,                        long distance mode,                 advanced
 silesia.tar,                        multithreaded,                      advanced one pass small out,        4854160
 silesia.tar,                        multithreaded long distance mode,   advanced one pass small out,        4845741
 silesia.tar,                        small window log,                   advanced one pass small out,        7100655
-silesia.tar,                        small hash log,                     advanced one pass small out,        6528983
+silesia.tar,                        small hash log,                     advanced one pass small out,        6529231
 silesia.tar,                        small chain log,                    advanced one pass small out,        4917041
 silesia.tar,                        explicit params,                    advanced one pass small out,        4806855
 silesia.tar,                        uncompressed literals,              advanced one pass small out,        5122473
@@ -891,7 +891,7 @@ silesia,                            long distance mode,                 advanced
 silesia,                            multithreaded,                      advanced streaming,                 4842075
 silesia,                            multithreaded long distance mode,   advanced streaming,                 4833737
 silesia,                            small window log,                   advanced streaming,                 7111103
-silesia,                            small hash log,                     advanced streaming,                 6525895
+silesia,                            small hash log,                     advanced streaming,                 6526141
 silesia,                            small chain log,                    advanced streaming,                 4912197
 silesia,                            explicit params,                    advanced streaming,                 4795452
 silesia,                            uncompressed literals,              advanced streaming,                 5120566
@@ -925,7 +925,7 @@ silesia.tar,                        long distance mode,                 advanced
 silesia.tar,                        multithreaded,                      advanced streaming,                 4854160
 silesia.tar,                        multithreaded long distance mode,   advanced streaming,                 4845741
 silesia.tar,                        small window log,                   advanced streaming,                 7117559
-silesia.tar,                        small hash log,                     advanced streaming,                 6528986
+silesia.tar,                        small hash log,                     advanced streaming,                 6529234
 silesia.tar,                        small chain log,                    advanced streaming,                 4917021
 silesia.tar,                        explicit params,                    advanced streaming,                 4806873
 silesia.tar,                        uncompressed literals,              advanced streaming,                 5127423
@@ -1303,7 +1303,7 @@ silesia,                            long distance mode,                 old stre
 silesia,                            multithreaded,                      old streaming advanced,             4842075
 silesia,                            multithreaded long distance mode,   old streaming advanced,             4842075
 silesia,                            small window log,                   old streaming advanced,             7111103
-silesia,                            small hash log,                     old streaming advanced,             6525895
+silesia,                            small hash log,                     old streaming advanced,             6526141
 silesia,                            small chain log,                    old streaming advanced,             4912197
 silesia,                            explicit params,                    old streaming advanced,             4795452
 silesia,                            uncompressed literals,              old streaming advanced,             4842075
@@ -1329,7 +1329,7 @@ silesia.tar,                        long distance mode,                 old stre
 silesia.tar,                        multithreaded,                      old streaming advanced,             4859271
 silesia.tar,                        multithreaded long distance mode,   old streaming advanced,             4859271
 silesia.tar,                        small window log,                   old streaming advanced,             7117562
-silesia.tar,                        small hash log,                     old streaming advanced,             6528986
+silesia.tar,                        small hash log,                     old streaming advanced,             6529234
 silesia.tar,                        small chain log,                    old streaming advanced,             4917021
 silesia.tar,                        explicit params,                    old streaming advanced,             4806873
 silesia.tar,                        uncompressed literals,              old streaming advanced,             4859271