range bench
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
|
|||||||
+26
-15
@@ -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,7 +456,14 @@ static int BMK_benchOneFile(char* inFileName, int cLevel)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Bench */
|
/* 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 */
|
/* clean up */
|
||||||
free(srcBuffer);
|
free(srcBuffer);
|
||||||
@@ -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,7 +496,15 @@ 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
|
||||||
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 */
|
/* End */
|
||||||
free(srcBuffer);
|
free(srcBuffer);
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
+13
-4
@@ -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,7 +293,14 @@ int main(int argc, char** argv)
|
|||||||
BMK_SetBlockSize(bSize);
|
BMK_SetBlockSize(bSize);
|
||||||
}
|
}
|
||||||
break;
|
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;
|
case 'p': main_pause=1; argument++; break;
|
||||||
|
|
||||||
/* unknown command */
|
/* unknown command */
|
||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user