mirror of
https://github.com/facebook/zstd.git
synced 2025-07-30 22:23:13 +03:00
zwrapbench: improved tests with a dictionary
This commit is contained in:
@ -257,7 +257,7 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize,
|
|||||||
ZSTD_CStream* zbc = ZSTD_createCStream();
|
ZSTD_CStream* zbc = ZSTD_createCStream();
|
||||||
size_t rSize;
|
size_t rSize;
|
||||||
if (zbc == NULL) EXM_THROW(1, "ZSTD_createCStream() allocation failure");
|
if (zbc == NULL) EXM_THROW(1, "ZSTD_createCStream() allocation failure");
|
||||||
rSize = ZSTD_initCStream_advanced(zbc, NULL, 0, zparams, avgSize);
|
rSize = ZSTD_initCStream_advanced(zbc, dictBuffer, dictBufferSize, zparams, avgSize);
|
||||||
if (ZSTD_isError(rSize)) EXM_THROW(1, "ZSTD_initCStream_advanced() failed : %s", ZSTD_getErrorName(rSize));
|
if (ZSTD_isError(rSize)) EXM_THROW(1, "ZSTD_initCStream_advanced() failed : %s", ZSTD_getErrorName(rSize));
|
||||||
do {
|
do {
|
||||||
U32 blockNb;
|
U32 blockNb;
|
||||||
@ -298,6 +298,10 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize,
|
|||||||
for (blockNb=0; blockNb<nbBlocks; blockNb++) {
|
for (blockNb=0; blockNb<nbBlocks; blockNb++) {
|
||||||
ret = deflateReset(&def);
|
ret = deflateReset(&def);
|
||||||
if (ret != Z_OK) EXM_THROW(1, "deflateReset failure");
|
if (ret != Z_OK) EXM_THROW(1, "deflateReset failure");
|
||||||
|
if (dictBuffer) {
|
||||||
|
ret = deflateSetDictionary(&def, dictBuffer, dictBufferSize);
|
||||||
|
if (ret != Z_OK) EXM_THROW(1, "deflateSetDictionary failure");
|
||||||
|
}
|
||||||
def.next_in = (const void*) blockTable[blockNb].srcPtr;
|
def.next_in = (const void*) blockTable[blockNb].srcPtr;
|
||||||
def.avail_in = blockTable[blockNb].srcSize;
|
def.avail_in = blockTable[blockNb].srcSize;
|
||||||
def.total_in = 0;
|
def.total_in = 0;
|
||||||
@ -325,6 +329,10 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize,
|
|||||||
def.opaque = Z_NULL;
|
def.opaque = Z_NULL;
|
||||||
ret = deflateInit(&def, cLevel);
|
ret = deflateInit(&def, cLevel);
|
||||||
if (ret != Z_OK) EXM_THROW(1, "deflateInit failure");
|
if (ret != Z_OK) EXM_THROW(1, "deflateInit failure");
|
||||||
|
if (dictBuffer) {
|
||||||
|
ret = deflateSetDictionary(&def, dictBuffer, dictBufferSize);
|
||||||
|
if (ret != Z_OK) EXM_THROW(1, "deflateSetDictionary failure");
|
||||||
|
}
|
||||||
def.next_in = (const void*) blockTable[blockNb].srcPtr;
|
def.next_in = (const void*) blockTable[blockNb].srcPtr;
|
||||||
def.avail_in = blockTable[blockNb].srcSize;
|
def.avail_in = blockTable[blockNb].srcSize;
|
||||||
def.total_in = 0;
|
def.total_in = 0;
|
||||||
@ -392,7 +400,7 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize,
|
|||||||
ZSTD_DStream* zbd = ZSTD_createDStream();
|
ZSTD_DStream* zbd = ZSTD_createDStream();
|
||||||
size_t rSize;
|
size_t rSize;
|
||||||
if (zbd == NULL) EXM_THROW(1, "ZSTD_createDStream() allocation failure");
|
if (zbd == NULL) EXM_THROW(1, "ZSTD_createDStream() allocation failure");
|
||||||
rSize = ZSTD_initDStream(zbd);
|
rSize = ZSTD_initDStream_usingDict(zbd, dictBuffer, dictBufferSize);
|
||||||
if (ZSTD_isError(rSize)) EXM_THROW(1, "ZSTD_initDStream() failed : %s", ZSTD_getErrorName(rSize));
|
if (ZSTD_isError(rSize)) EXM_THROW(1, "ZSTD_initDStream() failed : %s", ZSTD_getErrorName(rSize));
|
||||||
do {
|
do {
|
||||||
U32 blockNb;
|
U32 blockNb;
|
||||||
@ -434,6 +442,11 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize,
|
|||||||
inf.avail_out = blockTable[blockNb].srcSize;
|
inf.avail_out = blockTable[blockNb].srcSize;
|
||||||
inf.total_out = 0;
|
inf.total_out = 0;
|
||||||
ret = inflate(&inf, Z_FINISH);
|
ret = inflate(&inf, Z_FINISH);
|
||||||
|
if (ret == Z_NEED_DICT) {
|
||||||
|
ret = inflateSetDictionary(&inf, dictBuffer, dictBufferSize);
|
||||||
|
if (ret != Z_OK) EXM_THROW(1, "inflateSetDictionary failure");
|
||||||
|
ret = inflate(&inf, Z_FINISH);
|
||||||
|
}
|
||||||
if (ret != Z_STREAM_END) EXM_THROW(1, "inflate failure");
|
if (ret != Z_STREAM_END) EXM_THROW(1, "inflate failure");
|
||||||
blockTable[blockNb].resSize = inf.total_out;
|
blockTable[blockNb].resSize = inf.total_out;
|
||||||
}
|
}
|
||||||
@ -461,6 +474,11 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize,
|
|||||||
inf.avail_out = blockTable[blockNb].srcSize;
|
inf.avail_out = blockTable[blockNb].srcSize;
|
||||||
inf.total_out = 0;
|
inf.total_out = 0;
|
||||||
ret = inflate(&inf, Z_FINISH);
|
ret = inflate(&inf, Z_FINISH);
|
||||||
|
if (ret == Z_NEED_DICT) {
|
||||||
|
ret = inflateSetDictionary(&inf, dictBuffer, dictBufferSize);
|
||||||
|
if (ret != Z_OK) EXM_THROW(1, "inflateSetDictionary failure");
|
||||||
|
ret = inflate(&inf, Z_FINISH);
|
||||||
|
}
|
||||||
if (ret != Z_STREAM_END) EXM_THROW(1, "inflate failure");
|
if (ret != Z_STREAM_END) EXM_THROW(1, "inflate failure");
|
||||||
ret = inflateEnd(&inf);
|
ret = inflateEnd(&inf);
|
||||||
if (ret != Z_OK) EXM_THROW(1, "inflateEnd failure");
|
if (ret != Z_OK) EXM_THROW(1, "inflateEnd failure");
|
||||||
|
@ -231,13 +231,12 @@ ZEXTERN int ZEXPORT z_deflateSetDictionary OF((z_streamp strm,
|
|||||||
LOG_WRAPPERC("- deflateSetDictionary level=%d\n", (int)zwc->compressionLevel);
|
LOG_WRAPPERC("- deflateSetDictionary level=%d\n", (int)zwc->compressionLevel);
|
||||||
if (!zwc) return Z_STREAM_ERROR;
|
if (!zwc) return Z_STREAM_ERROR;
|
||||||
if (zwc->zbc == NULL) {
|
if (zwc->zbc == NULL) {
|
||||||
int res;
|
|
||||||
zwc->zbc = ZSTD_createCStream_advanced(zwc->customMem);
|
zwc->zbc = ZSTD_createCStream_advanced(zwc->customMem);
|
||||||
if (zwc->zbc == NULL) return ZWRAPC_finishWithError(zwc, strm, res);
|
if (zwc->zbc == NULL) return ZWRAPC_finishWithError(zwc, strm, 0);
|
||||||
res = ZWRAP_initializeCStream(zwc, dictionary, dictLength, 0);
|
|
||||||
if (res != Z_OK) return ZWRAPC_finishWithError(zwc, strm, res);
|
|
||||||
zwc->comprState = Z_NEED_DICT;
|
|
||||||
}
|
}
|
||||||
|
{ int res = ZWRAP_initializeCStream(zwc, dictionary, dictLength, 0);
|
||||||
|
if (res != Z_OK) return ZWRAPC_finishWithError(zwc, strm, res); }
|
||||||
|
zwc->comprState = Z_NEED_DICT;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Z_OK;
|
return Z_OK;
|
||||||
|
Reference in New Issue
Block a user