]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
zwrapbench: testing speed of ZSTD_decompressStream
authorinikep <inikep@gmail.com>
Thu, 22 Sep 2016 13:55:01 +0000 (15:55 +0200)
committerinikep <inikep@gmail.com>
Thu, 22 Sep 2016 13:55:01 +0000 (15:55 +0200)
zlibWrapper/.gitignore
zlibWrapper/Makefile
zlibWrapper/examples/zwrapbench.c

index bf3f3d87dc7296e315063b6599d0dfe84668e5f2..f197c8cc6b22b88ccb911beb5e4b8e82fd39d405 100644 (file)
@@ -26,4 +26,4 @@ foo.gz
 # Misc files
 *.bat
 *.zip
-examples/example2.c
+*.txt
index 5329e7e2cef617b07cb22a2c8ff7006837d94d25..3d6131aa16c09028103d9b457ab3c8fceb1a0512 100644 (file)
@@ -41,7 +41,7 @@ test_zstd: example_zstd fitblk_zstd zwrapbench
        ./example_zstd
        ./fitblk_zstd 10240 <../zstd_compression_format.md
        ./fitblk_zstd 40960 <../zstd_compression_format.md
-       ./zwrapbench ../zstd_compression_format.md
+       ./zwrapbench -qb1e5 ../zstd_compression_format.md
 
 .c.o:
        $(CC) $(CFLAGS) -c -o $@ $<
index 3f4fe05b03b8e9f45f18eb699bf02145163bba63..318a890c0528f24fdac30b9ccda46f71fe19c26d 100644 (file)
@@ -281,9 +281,9 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize,
                     if (compressor == BMK_ZLIB || compressor == BMK_ZWRAP_ZLIB) useZSTDcompression(0);
                     else useZSTDcompression(1);
                     do {
+                        z_stream def;
                         U32 blockNb;
                         for (blockNb=0; blockNb<nbBlocks; blockNb++) {
-                            z_stream def;
                             int ret;
                             def.zalloc = Z_NULL;
                             def.zfree = Z_NULL;
@@ -334,7 +334,7 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize,
 
             if (!dCompleted) {
                 U32 nbLoops = 0;
-                if (compressor == BMK_ZSTD || compressor == BMK_ZSTD2) {
+                if (compressor == BMK_ZSTD) {
                     ZSTD_DDict* ddict = ZSTD_createDDict(dictBuffer, dictBufferSize);
                     if (!ddict) EXM_THROW(2, "ZSTD_createDDict() allocation failure");
                     do {
@@ -355,13 +355,38 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize,
                         nbLoops++;
                     } while (UTIL_clockSpanMicro(clockStart, ticksPerSecond) < clockLoop);
                     ZSTD_freeDDict(ddict);
+                } else if (compressor == BMK_ZSTD2) {
+                    ZSTD_inBuffer inBuffer;
+                    ZSTD_outBuffer outBuffer;
+                    ZSTD_DStream* zbd = ZSTD_createDStream();
+                    if (zbd == NULL) EXM_THROW(1, "ZSTD_createDStream() allocation failure");
+
+                    do {
+                        U32 blockNb;
+                        for (blockNb=0; blockNb<nbBlocks; blockNb++) {
+                            size_t rSize;
+                            rSize = ZSTD_initDStream(zbd);
+                            if (ZSTD_isError(rSize)) EXM_THROW(1, "ZSTD_initDStream() failed : %s", ZSTD_getErrorName(rSize));
+                            inBuffer.src = blockTable[blockNb].cPtr;
+                            inBuffer.size = blockTable[blockNb].cSize;
+                            inBuffer.pos = 0;
+                            outBuffer.dst = blockTable[blockNb].resPtr;
+                            outBuffer.size = blockTable[blockNb].srcSize;
+                            outBuffer.pos = 0;
+                            rSize = ZSTD_decompressStream(zbd, &outBuffer, &inBuffer);
+                            if (ZSTD_isError(rSize)) EXM_THROW(1, "ZSTD_decompressStream() failed : %s", ZSTD_getErrorName(rSize));
+                            blockTable[blockNb].resSize = outBuffer.pos;
+                        }
+                        nbLoops++;
+                    } while (UTIL_clockSpanMicro(clockStart, ticksPerSecond) < clockLoop);
+                    ZSTD_freeDStream(zbd);
                 } else {
                     if (compressor == BMK_ZLIB) setZWRAPdecompressionType(ZWRAP_FORCE_ZLIB);
                     else setZWRAPdecompressionType(ZWRAP_AUTO);
                     do {
                         U32 blockNb;
+                        z_stream inf;
                         for (blockNb=0; blockNb<nbBlocks; blockNb++) {
-                            z_stream inf;
                             int ret;
                             inf.zalloc = Z_NULL;
                             inf.zfree = Z_NULL;