diff --git a/programs/bench.c b/programs/bench.c index 6b061f12b..940ddf003 100644 --- a/programs/bench.c +++ b/programs/bench.c @@ -217,7 +217,7 @@ typedef size_t (*compressor_t) (void* dst, size_t maxDstSize, const void* src, s static int BMK_benchMem(const void* srcBuffer, size_t srcSize, const char* displayName, int cLevel, - const char** fileNames, U32 nbFiles) + const size_t* fileSizes, U32 nbFiles) { const size_t blockSize = (g_blockSize ? g_blockSize : srcSize) + (!srcSize); /* avoid div by 0 */ const U32 maxNbBlocks = (U32) ((srcSize + (blockSize-1)) / blockSize) + nbFiles; @@ -244,9 +244,8 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize, char* resPtr = (char*)resultBuffer; for (fileNb=0; fileNb=2) ? BMK_getFileSize(fileNames[fileNb]) : srcSize; - size_t remaining = (size_t)fileSize; - U32 nbBlocksforThisFile = (U32)((fileSize + (blockSize-1)) / blockSize); + size_t remaining = fileSizes[fileNb]; + U32 nbBlocksforThisFile = (U32)((remaining + (blockSize-1)) / blockSize); U32 blockEnd = nbBlocks + nbBlocksforThisFile; for ( ; nbBlocks> 20)); srcBuffer = malloc(benchedSize); + fileSizes = malloc(nbFiles * sizeof(size_t)); if (!srcBuffer) EXM_THROW(12, "not enough memory"); /* Load input buffer */ - BMK_loadFiles(srcBuffer, benchedSize, fileNamesTable, nbFiles); + BMK_loadFiles(srcBuffer, benchedSize, fileSizes, fileNamesTable, nbFiles); /* Bench */ snprintf (mfName, sizeof(mfName), " %u files", nbFiles); if (nbFiles > 1) displayName = mfName; else displayName = fileNamesTable[0]; - BMK_benchCLevel(srcBuffer, benchedSize, displayName, cLevel, fileNamesTable, nbFiles); + BMK_benchCLevel(srcBuffer, benchedSize, displayName, cLevel, fileSizes, nbFiles); /* clean up */ free(srcBuffer); + free(fileSizes); } @@ -463,7 +468,7 @@ static void BMK_syntheticTest(int cLevel, double compressibility) /* Bench */ snprintf (name, sizeof(name), "Synthetic %2u%%", (unsigned)(compressibility*100)); - BMK_benchCLevel(srcBuffer, benchedSize, name, cLevel, NULL, 1); + BMK_benchCLevel(srcBuffer, benchedSize, name, cLevel, &benchedSize, 1); /* clean up */ free(srcBuffer);