ZSTD_estimateCDictSize_advanced()
ZSTD_estimateCDictSize() now uses same arguments as ZSTD_createCDict() ZSTD_estimateCDictSize_advanced() uses same arguments as ZSTD_createCDict_advanced()
This commit is contained in:
parent
0c9a915a28
commit
09ae03a570
@ -430,9 +430,12 @@ size_t ZSTD_estimateDStreamSize(ZSTD_frameHeader fHeader);
|
|||||||
In this case, get total size by adding ZSTD_estimate?DictSize
|
In this case, get total size by adding ZSTD_estimate?DictSize
|
||||||
</p></pre><BR>
|
</p></pre><BR>
|
||||||
|
|
||||||
<pre><b>size_t ZSTD_estimateCDictSize(ZSTD_compressionParameters cParams, size_t dictSize, unsigned byReference);
|
<pre><b>size_t ZSTD_estimateCDictSize(size_t dictSize, int compressionLevel);
|
||||||
|
size_t ZSTD_estimateCDictSize_advanced(size_t dictSize, ZSTD_compressionParameters cParams, unsigned byReference);
|
||||||
size_t ZSTD_estimateDDictSize(size_t dictSize, unsigned byReference);
|
size_t ZSTD_estimateDDictSize(size_t dictSize, unsigned byReference);
|
||||||
</b><p> Note : dictionary created "byReference" are smaller
|
</b><p> ZSTD_estimateCDictSize() will bet that src size is relatively "small", and content is copied, like ZSTD_createCDict().
|
||||||
|
ZSTD_estimateCStreamSize_advanced() makes it possible to control precisely compression parameters, like ZSTD_createCDict_advanced().
|
||||||
|
Note : dictionary created "byReference" are smaller
|
||||||
</p></pre><BR>
|
</p></pre><BR>
|
||||||
|
|
||||||
<a name="Chapter14"></a><h2>Advanced compression functions</h2><pre></pre>
|
<a name="Chapter14"></a><h2>Advanced compression functions</h2><pre></pre>
|
||||||
|
@ -3361,9 +3361,9 @@ size_t ZSTD_compress(void* dst, size_t dstCapacity, const void* src, size_t srcS
|
|||||||
|
|
||||||
/* ===== Dictionary API ===== */
|
/* ===== Dictionary API ===== */
|
||||||
|
|
||||||
/*! ZSTD_estimateCDictSize() :
|
/*! ZSTD_estimateCDictSize_advanced() :
|
||||||
* Estimate amount of memory that will be needed to create a dictionary with following arguments */
|
* Estimate amount of memory that will be needed to create a dictionary with following arguments */
|
||||||
size_t ZSTD_estimateCDictSize(ZSTD_compressionParameters cParams, size_t dictSize, unsigned byReference)
|
size_t ZSTD_estimateCDictSize_advanced(size_t dictSize, ZSTD_compressionParameters cParams, unsigned byReference)
|
||||||
{
|
{
|
||||||
DEBUGLOG(5, "sizeof(ZSTD_CDict) : %u", (U32)sizeof(ZSTD_CDict));
|
DEBUGLOG(5, "sizeof(ZSTD_CDict) : %u", (U32)sizeof(ZSTD_CDict));
|
||||||
DEBUGLOG(5, "CCtx estimate : %u", (U32)ZSTD_estimateCCtxSize_advanced(cParams));
|
DEBUGLOG(5, "CCtx estimate : %u", (U32)ZSTD_estimateCCtxSize_advanced(cParams));
|
||||||
@ -3371,6 +3371,12 @@ size_t ZSTD_estimateCDictSize(ZSTD_compressionParameters cParams, size_t dictSiz
|
|||||||
+ (byReference ? 0 : dictSize);
|
+ (byReference ? 0 : dictSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t ZSTD_estimateCDictSize(size_t dictSize, int compressionLevel)
|
||||||
|
{
|
||||||
|
ZSTD_compressionParameters const cParams = ZSTD_getCParams(compressionLevel, 0, dictSize);
|
||||||
|
return ZSTD_estimateCDictSize_advanced(dictSize, cParams, 0);
|
||||||
|
}
|
||||||
|
|
||||||
size_t ZSTD_sizeof_CDict(const ZSTD_CDict* cdict)
|
size_t ZSTD_sizeof_CDict(const ZSTD_CDict* cdict)
|
||||||
{
|
{
|
||||||
if (cdict==NULL) return 0; /* support sizeof on NULL */
|
if (cdict==NULL) return 0; /* support sizeof on NULL */
|
||||||
|
@ -517,8 +517,11 @@ ZSTDLIB_API size_t ZSTD_estimateCStreamSize_advanced(ZSTD_compressionParameters
|
|||||||
ZSTDLIB_API size_t ZSTD_estimateDStreamSize(ZSTD_frameHeader fHeader);
|
ZSTDLIB_API size_t ZSTD_estimateDStreamSize(ZSTD_frameHeader fHeader);
|
||||||
|
|
||||||
/*! ZSTD_estimate?DictSize() :
|
/*! ZSTD_estimate?DictSize() :
|
||||||
|
* ZSTD_estimateCDictSize() will bet that src size is relatively "small", and content is copied, like ZSTD_createCDict().
|
||||||
|
* ZSTD_estimateCStreamSize_advanced() makes it possible to control precisely compression parameters, like ZSTD_createCDict_advanced().
|
||||||
* Note : dictionary created "byReference" are smaller */
|
* Note : dictionary created "byReference" are smaller */
|
||||||
ZSTDLIB_API size_t ZSTD_estimateCDictSize(ZSTD_compressionParameters cParams, size_t dictSize, unsigned byReference);
|
ZSTDLIB_API size_t ZSTD_estimateCDictSize(size_t dictSize, int compressionLevel);
|
||||||
|
ZSTDLIB_API size_t ZSTD_estimateCDictSize_advanced(size_t dictSize, ZSTD_compressionParameters cParams, unsigned byReference);
|
||||||
ZSTDLIB_API size_t ZSTD_estimateDDictSize(size_t dictSize, unsigned byReference);
|
ZSTDLIB_API size_t ZSTD_estimateDDictSize(size_t dictSize, unsigned byReference);
|
||||||
|
|
||||||
|
|
||||||
|
@ -501,7 +501,7 @@ static int basicUnitTests(U32 seed, double compressibility)
|
|||||||
|
|
||||||
DISPLAYLEVEL(4, "test%3i : estimate CDict size : ", testNb++);
|
DISPLAYLEVEL(4, "test%3i : estimate CDict size : ", testNb++);
|
||||||
{ ZSTD_compressionParameters const cParams = ZSTD_getCParams(1, CNBuffSize, dictSize);
|
{ ZSTD_compressionParameters const cParams = ZSTD_getCParams(1, CNBuffSize, dictSize);
|
||||||
size_t const estimatedSize = ZSTD_estimateCDictSize(cParams, dictSize, 1 /*byReference*/);
|
size_t const estimatedSize = ZSTD_estimateCDictSize_advanced(dictSize, cParams, 1 /*byReference*/);
|
||||||
DISPLAYLEVEL(4, "OK : %u \n", (U32)estimatedSize);
|
DISPLAYLEVEL(4, "OK : %u \n", (U32)estimatedSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -534,7 +534,7 @@ static int basicUnitTests(U32 seed, double compressibility)
|
|||||||
|
|
||||||
DISPLAYLEVEL(4, "test%3i : compress with static CDict : ", testNb++);
|
DISPLAYLEVEL(4, "test%3i : compress with static CDict : ", testNb++);
|
||||||
{ ZSTD_compressionParameters const cParams = ZSTD_getCParams(1, CNBuffSize, dictSize);
|
{ ZSTD_compressionParameters const cParams = ZSTD_getCParams(1, CNBuffSize, dictSize);
|
||||||
size_t const cdictSize = ZSTD_estimateCDictSize(cParams, dictSize, 0);
|
size_t const cdictSize = ZSTD_estimateCDictSize_advanced(dictSize, cParams, 0);
|
||||||
void* const cdictBuffer = malloc(cdictSize);
|
void* const cdictBuffer = malloc(cdictSize);
|
||||||
if (cdictBuffer==NULL) goto _output_error;
|
if (cdictBuffer==NULL) goto _output_error;
|
||||||
{ ZSTD_CDict* const cdict = ZSTD_initStaticCDict(cdictBuffer, cdictSize,
|
{ ZSTD_CDict* const cdict = ZSTD_initStaticCDict(cdictBuffer, cdictSize,
|
||||||
|
@ -212,7 +212,7 @@ static int basicUnitTests(U32 seed, double compressibility, ZSTD_customMem custo
|
|||||||
{ ZSTD_compressionParameters const cParams = ZSTD_getCParams(1, CNBufferSize, dictSize);
|
{ ZSTD_compressionParameters const cParams = ZSTD_getCParams(1, CNBufferSize, dictSize);
|
||||||
size_t const s = ZSTD_estimateCStreamSize_advanced(cParams)
|
size_t const s = ZSTD_estimateCStreamSize_advanced(cParams)
|
||||||
/* uses ZSTD_initCStream_usingDict() */
|
/* uses ZSTD_initCStream_usingDict() */
|
||||||
+ ZSTD_estimateCDictSize(cParams, dictSize, 0);
|
+ ZSTD_estimateCDictSize_advanced(dictSize, cParams, 0);
|
||||||
if (ZSTD_isError(s)) goto _output_error;
|
if (ZSTD_isError(s)) goto _output_error;
|
||||||
DISPLAYLEVEL(3, "OK (%u bytes) \n", (U32)s);
|
DISPLAYLEVEL(3, "OK (%u bytes) \n", (U32)s);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user