From: Yann Collet Date: Thu, 29 Oct 2015 18:10:54 +0000 (+0100) Subject: range bench X-Git-Tag: zstd-0.3.0^2~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c776c46b46a8e969e4599d843c94273e34bbdb9d;p=thirdparty%2Fzstd.git range bench --- diff --git a/NEWS b/NEWS index 4c4c30019..e8d8affa0 100644 --- 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 diff --git a/programs/bench.c b/programs/bench.c index 7cffc5eec..324f9f282 100644 --- a/programs/bench.c +++ b/programs/bench.c @@ -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); diff --git a/programs/paramgrill.c b/programs/paramgrill.c index 4552129f8..7b20d9f26 100644 --- a/programs/paramgrill.c +++ b/programs/paramgrill.c @@ -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) diff --git a/programs/zstdcli.c b/programs/zstdcli.c index d71850149..837ce6812 100644 --- a/programs/zstdcli.c +++ b/programs/zstdcli.c @@ -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)