final parameter tuning
This commit is contained in:
@@ -182,6 +182,7 @@ size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx);
|
|||||||
ZSTD_createCDict() will create a digested dictionary, ready to start future compression operations without startup delay.
|
ZSTD_createCDict() will create a digested dictionary, ready to start future compression operations without startup delay.
|
||||||
ZSTD_CDict can be created once and shared by multiple threads concurrently, since its usage is read-only.
|
ZSTD_CDict can be created once and shared by multiple threads concurrently, since its usage is read-only.
|
||||||
`dictBuffer` can be released after ZSTD_CDict creation, since its content is copied within CDict
|
`dictBuffer` can be released after ZSTD_CDict creation, since its content is copied within CDict
|
||||||
|
Note : A ZSTD_CDict can be created with an empty dictionary, but it is inefficient for small data.
|
||||||
</p></pre><BR>
|
</p></pre><BR>
|
||||||
|
|
||||||
<pre><b>size_t ZSTD_freeCDict(ZSTD_CDict* CDict);
|
<pre><b>size_t ZSTD_freeCDict(ZSTD_CDict* CDict);
|
||||||
@@ -196,6 +197,8 @@ size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx);
|
|||||||
Faster startup than ZSTD_compress_usingDict(), recommended when same dictionary is used multiple times.
|
Faster startup than ZSTD_compress_usingDict(), recommended when same dictionary is used multiple times.
|
||||||
Note that compression level is decided during dictionary creation.
|
Note that compression level is decided during dictionary creation.
|
||||||
Frame parameters are hardcoded (dictID=yes, contentSize=yes, checksum=no)
|
Frame parameters are hardcoded (dictID=yes, contentSize=yes, checksum=no)
|
||||||
|
Note : ZSTD_compress_usingCDict() can be used with a ZSTD_CDict created from an empty dictionary.
|
||||||
|
But it is inefficient for small data, and it is recommended to use ZSTD_compressCCtx().
|
||||||
</p></pre><BR>
|
</p></pre><BR>
|
||||||
|
|
||||||
<pre><b>ZSTD_DDict* ZSTD_createDDict(const void* dictBuffer, size_t dictSize);
|
<pre><b>ZSTD_DDict* ZSTD_createDDict(const void* dictBuffer, size_t dictSize);
|
||||||
|
|||||||
@@ -1039,7 +1039,8 @@ size_t ZSTD_decodeSeqHeaders(ZSTD_DCtx* dctx, int* nbSeqPtr,
|
|||||||
/* prefetch dictionary content */
|
/* prefetch dictionary content */
|
||||||
if (dctx->ddictIsCold) {
|
if (dctx->ddictIsCold) {
|
||||||
size_t const dictSize = (const char*)dctx->prefixStart - (const char*)dctx->virtualStart;
|
size_t const dictSize = (const char*)dctx->prefixStart - (const char*)dctx->virtualStart;
|
||||||
size_t const pSize = MIN(dictSize, (size_t)(64*nbSeq));
|
size_t const psmin = MIN(dictSize, (size_t)(64*nbSeq) /* heuristic */ );
|
||||||
|
size_t const pSize = MIN(psmin, 128 KB /* protection */ );
|
||||||
const void* const pStart = (const char*)dctx->dictEnd - pSize;
|
const void* const pStart = (const char*)dctx->dictEnd - pSize;
|
||||||
PREFETCH_AREA(pStart, pSize);
|
PREFETCH_AREA(pStart, pSize);
|
||||||
dctx->ddictIsCold = 0;
|
dctx->ddictIsCold = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user