diff --git a/lib/compress/huf_compress.c b/lib/compress/huf_compress.c index b533573d..d1b98afd 100644 --- a/lib/compress/huf_compress.c +++ b/lib/compress/huf_compress.c @@ -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 */ diff --git a/tests/regression/results.csv b/tests/regression/results.csv index f80da9f4..3385c504 100644 --- a/tests/regression/results.csv +++ b/tests/regression/results.csv @@ -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