]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
zwrapbench: improved tests with a dictionary
authorinikep <inikep@gmail.com>
Mon, 26 Sep 2016 20:11:55 +0000 (22:11 +0200)
committerinikep <inikep@gmail.com>
Mon, 26 Sep 2016 20:11:55 +0000 (22:11 +0200)
zlibWrapper/examples/zwrapbench.c
zlibWrapper/zstd_zlibwrapper.c

index f0ae8cd9750e73731c7f6ef5c55ee269ba9d6b81..99f91739b23a26d6d38890ed1588b0ac4df23e68 100644 (file)
@@ -257,7 +257,7 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize,
                     ZSTD_CStream* zbc = ZSTD_createCStream();
                     size_t rSize;
                     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));
                     do {
                         U32 blockNb;
@@ -298,6 +298,10 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize,
                         for (blockNb=0; blockNb<nbBlocks; blockNb++) {
                             ret = deflateReset(&def);
                             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.avail_in = blockTable[blockNb].srcSize;
                             def.total_in = 0;
@@ -325,6 +329,10 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize,
                             def.opaque = Z_NULL;
                             ret = deflateInit(&def, cLevel);
                             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.avail_in = blockTable[blockNb].srcSize;
                             def.total_in = 0;
@@ -392,7 +400,7 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize,
                     ZSTD_DStream* zbd = ZSTD_createDStream();
                     size_t rSize;
                     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));
                     do {
                         U32 blockNb;
@@ -434,6 +442,11 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize,
                             inf.avail_out = blockTable[blockNb].srcSize;
                             inf.total_out = 0;
                             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");
                             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.total_out = 0;
                             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");
                             ret = inflateEnd(&inf);
                             if (ret != Z_OK) EXM_THROW(1, "inflateEnd failure");
index 766570f2b50b4c7a25ffbfc9e7ad3d48f545c640..524ca78689781b725b5e7b80f20f2a6333479a50 100644 (file)
@@ -231,13 +231,12 @@ ZEXTERN int ZEXPORT z_deflateSetDictionary OF((z_streamp strm,
         LOG_WRAPPERC("- deflateSetDictionary level=%d\n", (int)zwc->compressionLevel);
         if (!zwc) return Z_STREAM_ERROR;
         if (zwc->zbc == NULL) {
-            int res;
             zwc->zbc = ZSTD_createCStream_advanced(zwc->customMem);
-            if (zwc->zbc == NULL) return ZWRAPC_finishWithError(zwc, strm, res);
-            res = ZWRAP_initializeCStream(zwc, dictionary, dictLength, 0);
-            if (res != Z_OK) return ZWRAPC_finishWithError(zwc, strm, res);
-            zwc->comprState = Z_NEED_DICT;
+            if (zwc->zbc == NULL) return ZWRAPC_finishWithError(zwc, strm, 0);
         }
+        { 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;