]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
range bench
authorYann Collet <yann.collet.73@gmail.com>
Thu, 29 Oct 2015 18:10:54 +0000 (19:10 +0100)
committerYann Collet <yann.collet.73@gmail.com>
Thu, 29 Oct 2015 18:10:54 +0000 (19:10 +0100)
NEWS
programs/bench.c
programs/paramgrill.c
programs/zstdcli.c

diff --git a/NEWS b/NEWS
index 4c4c30019097b79790c77a5e42319b59cc2a2173..e8d8affa01e31b4592d7afc233a6172268b9ad18 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,6 @@
+v0.3
+HC mode : compression levels 2-26
+
 v0.2.2
 Fix : Visual Studio 2013 & 2015 release compilation, by Christophe Chevalier
 
index 7cffc5eec7c43b5c366e3483c60c81fce31cbbaf..324f9f282ebe7f0d908ab777c517a37286e407e1 100644 (file)
@@ -247,9 +247,13 @@ static int BMK_benchMem(void* srcBuffer, size_t srcSize, const char* fileName, i
     const size_t maxCompressedSize = (size_t)nbBlocks * ZSTD_compressBound(blockSize);
     void* const compressedBuffer = malloc(maxCompressedSize);
     void* const resultBuffer = malloc(srcSize);
-    const compressor_t compressor = (cLevel == 0) ? local_compress_fast : ZSTD_HC_compress;
+    const compressor_t compressor = (cLevel <= 1) ? local_compress_fast : ZSTD_HC_compress;
     U64 crcOrig;
 
+    /* init */
+    if (strlen(fileName)>16)
+        fileName += strlen(fileName)-16;
+
     /* Memory allocation & restrictions */
     if (!compressedBuffer || !resultBuffer || !blockTable)
     {
@@ -304,7 +308,7 @@ static int BMK_benchMem(void* srcBuffer, size_t srcSize, const char* fileName, i
             U32 blockNb;
 
             /* Compression */
-            DISPLAY("%1i-%-14.14s : %9u ->\r", loopNb, fileName, (U32)srcSize);
+            DISPLAY("%1i-%-16.16s : %9u ->\r", loopNb, fileName, (U32)srcSize);
             memset(compressedBuffer, 0xE5, maxCompressedSize);
 
             nbLoops = 0;
@@ -324,7 +328,7 @@ static int BMK_benchMem(void* srcBuffer, size_t srcSize, const char* fileName, i
                 cSize += blockTable[blockNb].cSize;
             if ((double)milliTime < fastestC*nbLoops) fastestC = (double)milliTime / nbLoops;
             ratio = (double)srcSize / (double)cSize;
-            DISPLAY("%1i-%-14.14s : %9i -> %9i (%5.3f),%7.1f MB/s\r", loopNb, fileName, (int)srcSize, (int)cSize, ratio, (double)srcSize / fastestC / 1000.);
+            DISPLAY("%1i-%-16.16s : %9i -> %9i (%5.3f),%7.1f MB/s\r", loopNb, fileName, (int)srcSize, (int)cSize, ratio, (double)srcSize / fastestC / 1000.);
 
 #if 1
             /* Decompression */
@@ -343,7 +347,7 @@ static int BMK_benchMem(void* srcBuffer, size_t srcSize, const char* fileName, i
             milliTime = BMK_GetMilliSpan(milliTime);
 
             if ((double)milliTime < fastestD*nbLoops) fastestD = (double)milliTime / nbLoops;
-            DISPLAY("%1i-%-14.14s : %9i -> %9i (%5.3f),%7.1f MB/s ,%7.1f MB/s\r", loopNb, fileName, (int)srcSize, (int)cSize, ratio, (double)srcSize / fastestC / 1000., (double)srcSize / fastestD / 1000.);
+            DISPLAY("%1i-%-16.16s : %9i -> %9i (%5.3f),%7.1f MB/s ,%7.1f MB/s\r", loopNb, fileName, (int)srcSize, (int)cSize, ratio, (double)srcSize / fastestC / 1000., (double)srcSize / fastestD / 1000.);
 
             /* CRC Checking */
             crcCheck = XXH64(resultBuffer, srcSize, 0);
@@ -366,9 +370,7 @@ static int BMK_benchMem(void* srcBuffer, size_t srcSize, const char* fileName, i
         }
 
         if (crcOrig == crcCheck)
-        {
-                DISPLAY("%-16.16s : %9i -> %9i (%5.3f),%7.1f MB/s ,%7.1f MB/s \n", fileName, (int)srcSize, (int)cSize, ratio, (double)srcSize / fastestC / 1000., (double)srcSize / fastestD / 1000.);
-        }
+            DISPLAY("%1i-%-16.16s : %9i -> %9i (%5.3f),%7.1f MB/s ,%7.1f MB/s \n", cLevel, fileName, (int)srcSize, (int)cSize, ratio, (double)srcSize / fastestC / 1000., (double)srcSize / fastestD / 1000.);
     }
 
     /* End cleaning */
@@ -419,9 +421,6 @@ static int BMK_benchOneFile(char* inFileName, int cLevel)
     void* srcBuffer;
     int result;
 
-    /* Init */
-    (void)cLevel;
-
     /* Check file existence */
     inFile = fopen(inFileName, "rb");
     if (inFile == NULL)
@@ -457,7 +456,14 @@ static int BMK_benchOneFile(char* inFileName, int cLevel)
     }
 
     /* Bench */
-    result = BMK_benchMem(srcBuffer, benchedSize, inFileName, cLevel);
+    if (cLevel<0)
+    {
+        int l;
+        for (l=1; l <= -cLevel; l++)
+            result = BMK_benchMem(srcBuffer, benchedSize, inFileName, l);
+    }
+    else
+        result = BMK_benchMem(srcBuffer, benchedSize, inFileName, cLevel);
 
     /* clean up */
     free(srcBuffer);
@@ -473,9 +479,6 @@ static int BMK_syntheticTest(int cLevel, double compressibility)
     int result;
     char name[20] = {0};
 
-    /* Init */
-    (void)cLevel;
-
     /* Memory allocation */
     if (!srcBuffer)
     {
@@ -493,7 +496,15 @@ static int BMK_syntheticTest(int cLevel, double compressibility)
 #else
     snprintf (name, 20, "Synthetic %2u%%", (unsigned)(compressibility*100));
 #endif
-    result = BMK_benchMem(srcBuffer, benchedSize, name, cLevel);
+    /* Bench */
+    if (cLevel<0)
+    {
+        int l;
+        for (l=1; l <= -cLevel; l++)
+            result = BMK_benchMem(srcBuffer, benchedSize, name, l);
+    }
+    else
+        result = BMK_benchMem(srcBuffer, benchedSize, name, cLevel);
 
     /* End */
     free(srcBuffer);
index 4552129f8cc214e0648656f5588dc2cc731f7a88..7b20d9f26c74ae2bf0f9247710eba9a614a29f74 100644 (file)
@@ -508,8 +508,8 @@ static int BMK_seed(winnerInfo_t* winners, const ZSTD_HC_parameters params,
             double W_CSpeed_note = W_ratioNote * ( 30 + 8*cLevel) + log((double)testResult.cSpeed);
             double O_CSpeed_note = O_ratioNote * ( 30 + 8*cLevel) + log((double)winners[cLevel].result.cSpeed);
 
-            double W_DSpeed_note = W_ratioNote * ( 20 + 2*cLevel) + log((double)testResult.dSpeed);
-            double O_DSpeed_note = O_ratioNote * ( 20 + 2*cLevel) + log((double)winners[cLevel].result.dSpeed);
+            double W_DSpeed_note = W_ratioNote * ( 10 + 2*cLevel) + log((double)testResult.dSpeed);
+            double O_DSpeed_note = O_ratioNote * ( 10 + 2*cLevel) + log((double)winners[cLevel].result.dSpeed);
 
 
             if (W_DMemUsed_note < O_DMemUsed_note)
index d71850149e1b1a0487f613678affbbadc8fe6575..837ce68129e60e5acaa06a81e31624aafd270215 100644 (file)
@@ -139,9 +139,10 @@ static int usage_advanced(const char* programName)
     DISPLAY( " -c     : force write to standard output, even if it is the console\n");
     //DISPLAY( " -t     : test compressed file integrity\n");
     DISPLAY( "Benchmark arguments :\n");
-    DISPLAY( " -b     : benchmark file(s)\n");
+    DISPLAY( " -b#    : benchmark file(s), using # compression level (default : 1) \n");
     DISPLAY( " -B#    : cut file into independent blocks of size # (default : no block)\n");
     DISPLAY( " -i#    : iteration loops [1-9](default : 3)\n");
+    DISPLAY( " -r#    : test all compression levels from 1 to # (default : disabled)\n");
     return 0;
 }
 
@@ -168,7 +169,8 @@ int main(int argc, char** argv)
         bench=0,
         decode=0,
         forceStdout=0,
-        main_pause=0;
+        main_pause=0,
+        rangeBench = 1;
     unsigned fileNameStart = 0;
     unsigned nbFiles = 0;
     unsigned cLevel = 0;
@@ -291,7 +293,14 @@ int main(int argc, char** argv)
                         BMK_SetBlockSize(bSize);
                     }
                     break;
-                                        /* Pause at the end (hidden option) */
+
+                    /* range bench (benchmark only) */
+                case 'r':
+                        rangeBench = -1;
+                        argument++;
+                        break;
+
+                    /* Pause at the end (hidden option) */
                 case 'p': main_pause=1; argument++; break;
 
                     /* unknown command */
@@ -323,7 +332,7 @@ int main(int argc, char** argv)
     if (!strcmp(inFileName, stdinmark) && IS_CONSOLE(stdin) ) return badusage(programName);
 
     /* Check if benchmark is selected */
-    if (bench) { BMK_benchFiles(argv+fileNameStart, nbFiles, cLevel); goto _end; }
+    if (bench) { BMK_benchFiles(argv+fileNameStart, nbFiles, cLevel*rangeBench); goto _end; }
 
     /* No output filename ==> try to select one automatically (when possible) */
     while (!outFileName)