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)
{
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;
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 */
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);
}
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 */
void* srcBuffer;
int result;
- /* Init */
- (void)cLevel;
-
/* Check file existence */
inFile = fopen(inFileName, "rb");
if (inFile == NULL)
}
/* 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);
int result;
char name[20] = {0};
- /* Init */
- (void)cLevel;
-
/* Memory allocation */
if (!srcBuffer)
{
#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);
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;
}
bench=0,
decode=0,
forceStdout=0,
- main_pause=0;
+ main_pause=0,
+ rangeBench = 1;
unsigned fileNameStart = 0;
unsigned nbFiles = 0;
unsigned cLevel = 0;
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 */
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)