From 1840d6af33478654358d540415625679c2d8fc0a Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Wed, 20 Jan 2016 15:39:06 +0100 Subject: [PATCH] bench pay attention to variable block sizes --- lib/zstd_static.h | 6 +++--- programs/bench.c | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/zstd_static.h b/lib/zstd_static.h index f1e72e955..a98cfead9 100644 --- a/lib/zstd_static.h +++ b/lib/zstd_static.h @@ -284,8 +284,8 @@ static const ZSTD_parameters ZSTD_defaultParameters[4][ZSTD_MAX_CLEVEL+1] = { /* W, C, H, S, L, strat */ { 0, 17, 12, 12, 1, 4, ZSTD_fast }, /* level 0 - never used */ { 0, 17, 12, 13, 1, 6, ZSTD_fast }, /* level 1 */ - { 0, 17, 15, 16, 1, 5, ZSTD_fast }, /* level 2 */ - { 0, 17, 16, 17, 1, 5, ZSTD_fast }, /* level 3 */ + { 0, 17, 14, 16, 1, 5, ZSTD_fast }, /* level 2 */ + { 0, 17, 15, 17, 1, 5, ZSTD_fast }, /* level 3 */ { 0, 17, 13, 15, 2, 4, ZSTD_greedy }, /* level 4 */ { 0, 17, 15, 17, 3, 4, ZSTD_greedy }, /* level 5 */ { 0, 17, 14, 17, 3, 4, ZSTD_lazy }, /* level 6 */ @@ -308,7 +308,7 @@ static const ZSTD_parameters ZSTD_defaultParameters[4][ZSTD_MAX_CLEVEL+1] = { /* W, C, H, S, L, strat */ { 0, 0, 0, 0, 0, 0, ZSTD_fast }, /* level 0 - never used */ { 0, 14, 14, 14, 1, 4, ZSTD_fast }, /* level 1 */ - { 0, 14, 14, 16, 1, 4, ZSTD_fast }, /* level 1 */ + { 0, 14, 14, 16, 1, 4, ZSTD_fast }, /* level 2 */ { 0, 14, 14, 14, 5, 4, ZSTD_greedy }, /* level 3 */ { 0, 14, 14, 14, 8, 4, ZSTD_greedy }, /* level 4 */ { 0, 14, 11, 14, 6, 4, ZSTD_lazy }, /* level 5 */ diff --git a/programs/bench.c b/programs/bench.c index 3c74a572c..14b36b489 100644 --- a/programs/bench.c +++ b/programs/bench.c @@ -220,6 +220,7 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize, { const size_t blockSize = (g_blockSize ? g_blockSize : srcSize) + (!srcSize); /* avoid div by 0 */ const U32 maxNbBlocks = (U32) ((srcSize + (blockSize-1)) / blockSize) + nbFiles; + size_t largestBlockSize = 0; blockParam_t* const blockTable = (blockParam_t*) malloc(maxNbBlocks * sizeof(blockParam_t)); const size_t maxCompressedSize = ZSTD_compressBound(srcSize) + (maxNbBlocks * 1024); /* add some room for safety */ void* const compressedBuffer = malloc(maxCompressedSize); @@ -260,6 +261,7 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize, cPtr += blockTable[nbBlocks].cRoom; resPtr += thisBlockSize; remaining -= thisBlockSize; + if (thisBlockSize > largestBlockSize) largestBlockSize = thisBlockSize; } } } @@ -292,7 +294,7 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize, milliTime = BMK_GetMilliStart(); while (BMK_GetMilliSpan(milliTime) < TIMELOOP) { - ZSTD_compressBegin_advanced(refCtx, ZSTD_getParams(cLevel, dictBufferSize+blockSize)); + ZSTD_compressBegin_advanced(refCtx, ZSTD_getParams(cLevel, dictBufferSize+largestBlockSize)); ZSTD_compress_insertDictionary(refCtx, dictBuffer, dictBufferSize); for (blockNb=0; blockNb