From: Yann Collet Date: Wed, 16 Dec 2015 02:01:03 +0000 (+0100) Subject: faster init for multi-files bench X-Git-Tag: v0.4.5^2~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7061135d330342212147d01762c53f0bda78a0a0;p=thirdparty%2Fzstd.git faster init for multi-files bench --- 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);