range bench

This commit is contained in:
Yann Collet
2015-10-29 19:10:54 +01:00
parent 712def905b
commit c776c46b46
4 changed files with 44 additions and 21 deletions
+3
View File
@@ -1,3 +1,6 @@
v0.3
HC mode : compression levels 2-26
v0.2.2 v0.2.2
Fix : Visual Studio 2013 & 2015 release compilation, by Christophe Chevalier Fix : Visual Studio 2013 & 2015 release compilation, by Christophe Chevalier
+24 -13
View 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); const size_t maxCompressedSize = (size_t)nbBlocks * ZSTD_compressBound(blockSize);
void* const compressedBuffer = malloc(maxCompressedSize); void* const compressedBuffer = malloc(maxCompressedSize);
void* const resultBuffer = malloc(srcSize); 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; U64 crcOrig;
/* init */
if (strlen(fileName)>16)
fileName += strlen(fileName)-16;
/* Memory allocation & restrictions */ /* Memory allocation & restrictions */
if (!compressedBuffer || !resultBuffer || !blockTable) if (!compressedBuffer || !resultBuffer || !blockTable)
{ {
@@ -304,7 +308,7 @@ static int BMK_benchMem(void* srcBuffer, size_t srcSize, const char* fileName, i
U32 blockNb; U32 blockNb;
/* Compression */ /* 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); memset(compressedBuffer, 0xE5, maxCompressedSize);
nbLoops = 0; nbLoops = 0;
@@ -324,7 +328,7 @@ static int BMK_benchMem(void* srcBuffer, size_t srcSize, const char* fileName, i
cSize += blockTable[blockNb].cSize; cSize += blockTable[blockNb].cSize;
if ((double)milliTime < fastestC*nbLoops) fastestC = (double)milliTime / nbLoops; if ((double)milliTime < fastestC*nbLoops) fastestC = (double)milliTime / nbLoops;
ratio = (double)srcSize / (double)cSize; 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 #if 1
/* Decompression */ /* Decompression */
@@ -343,7 +347,7 @@ static int BMK_benchMem(void* srcBuffer, size_t srcSize, const char* fileName, i
milliTime = BMK_GetMilliSpan(milliTime); milliTime = BMK_GetMilliSpan(milliTime);
if ((double)milliTime < fastestD*nbLoops) fastestD = (double)milliTime / nbLoops; 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 */ /* CRC Checking */
crcCheck = XXH64(resultBuffer, srcSize, 0); 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) if (crcOrig == crcCheck)
{ 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.);
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.);
}
} }
/* End cleaning */ /* End cleaning */
@@ -419,9 +421,6 @@ static int BMK_benchOneFile(char* inFileName, int cLevel)
void* srcBuffer; void* srcBuffer;
int result; int result;
/* Init */
(void)cLevel;
/* Check file existence */ /* Check file existence */
inFile = fopen(inFileName, "rb"); inFile = fopen(inFileName, "rb");
if (inFile == NULL) if (inFile == NULL)
@@ -457,6 +456,13 @@ static int BMK_benchOneFile(char* inFileName, int cLevel)
} }
/* Bench */ /* Bench */
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); result = BMK_benchMem(srcBuffer, benchedSize, inFileName, cLevel);
/* clean up */ /* clean up */
@@ -473,9 +479,6 @@ static int BMK_syntheticTest(int cLevel, double compressibility)
int result; int result;
char name[20] = {0}; char name[20] = {0};
/* Init */
(void)cLevel;
/* Memory allocation */ /* Memory allocation */
if (!srcBuffer) if (!srcBuffer)
{ {
@@ -493,6 +496,14 @@ static int BMK_syntheticTest(int cLevel, double compressibility)
#else #else
snprintf (name, 20, "Synthetic %2u%%", (unsigned)(compressibility*100)); snprintf (name, 20, "Synthetic %2u%%", (unsigned)(compressibility*100));
#endif #endif
/* 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); result = BMK_benchMem(srcBuffer, benchedSize, name, cLevel);
/* End */ /* End */
+2 -2
View 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 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 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 W_DSpeed_note = W_ratioNote * ( 10 + 2*cLevel) + log((double)testResult.dSpeed);
double O_DSpeed_note = O_ratioNote * ( 20 + 2*cLevel) + log((double)winners[cLevel].result.dSpeed); double O_DSpeed_note = O_ratioNote * ( 10 + 2*cLevel) + log((double)winners[cLevel].result.dSpeed);
if (W_DMemUsed_note < O_DMemUsed_note) if (W_DMemUsed_note < O_DMemUsed_note)
+12 -3
View 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( " -c : force write to standard output, even if it is the console\n");
//DISPLAY( " -t : test compressed file integrity\n"); //DISPLAY( " -t : test compressed file integrity\n");
DISPLAY( "Benchmark arguments :\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( " -B# : cut file into independent blocks of size # (default : no block)\n");
DISPLAY( " -i# : iteration loops [1-9](default : 3)\n"); DISPLAY( " -i# : iteration loops [1-9](default : 3)\n");
DISPLAY( " -r# : test all compression levels from 1 to # (default : disabled)\n");
return 0; return 0;
} }
@@ -168,7 +169,8 @@ int main(int argc, char** argv)
bench=0, bench=0,
decode=0, decode=0,
forceStdout=0, forceStdout=0,
main_pause=0; main_pause=0,
rangeBench = 1;
unsigned fileNameStart = 0; unsigned fileNameStart = 0;
unsigned nbFiles = 0; unsigned nbFiles = 0;
unsigned cLevel = 0; unsigned cLevel = 0;
@@ -291,6 +293,13 @@ int main(int argc, char** argv)
BMK_SetBlockSize(bSize); BMK_SetBlockSize(bSize);
} }
break; break;
/* range bench (benchmark only) */
case 'r':
rangeBench = -1;
argument++;
break;
/* Pause at the end (hidden option) */ /* Pause at the end (hidden option) */
case 'p': main_pause=1; argument++; break; case 'p': main_pause=1; argument++; break;
@@ -323,7 +332,7 @@ int main(int argc, char** argv)
if (!strcmp(inFileName, stdinmark) && IS_CONSOLE(stdin) ) return badusage(programName); if (!strcmp(inFileName, stdinmark) && IS_CONSOLE(stdin) ) return badusage(programName);
/* Check if benchmark is selected */ /* 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) */ /* No output filename ==> try to select one automatically (when possible) */
while (!outFileName) while (!outFileName)