static ZSTD_blockCompressor ZSTD_selectBlockCompressor(ZSTD_strategy strat, int extDict)
{
- if (extDict)
- {
- switch(strat)
- {
- default :
- case ZSTD_fast:
- return ZSTD_compressBlock_fast_extDict;
- case ZSTD_greedy:
- return ZSTD_compressBlock_greedy_extDict;
- case ZSTD_lazy:
- return ZSTD_compressBlock_lazy_extDict;
- case ZSTD_lazy2:
- return ZSTD_compressBlock_lazy2_extDict;
- case ZSTD_btlazy2:
- return ZSTD_compressBlock_btlazy2_extDict;
- }
- }
- else
- {
- switch(strat)
- {
- default :
- case ZSTD_fast:
- return ZSTD_compressBlock_fast;
- case ZSTD_greedy:
- return ZSTD_compressBlock_greedy;
- case ZSTD_lazy:
- return ZSTD_compressBlock_lazy;
- case ZSTD_lazy2:
- return ZSTD_compressBlock_lazy2;
- case ZSTD_btlazy2:
- return ZSTD_compressBlock_btlazy2;
- }
- }
+ static const ZSTD_blockCompressor blockCompressor[2][5] = {
+ { ZSTD_compressBlock_fast, ZSTD_compressBlock_greedy, ZSTD_compressBlock_lazy,ZSTD_compressBlock_lazy2, ZSTD_compressBlock_btlazy2 },
+ { ZSTD_compressBlock_fast_extDict, ZSTD_compressBlock_greedy_extDict, ZSTD_compressBlock_lazy_extDict,ZSTD_compressBlock_lazy2_extDict, ZSTD_compressBlock_btlazy2_extDict }
+ };
+
+ return blockCompressor[extDict][(U32)strat];
}
BYTE* const ostart = (BYTE*)dst;
BYTE* op = ostart;
const U32 maxDist = 1 << ctxPtr->params.windowLog;
- //const ZSTD_blockCompressor blockCompressor = ZSTD_selectBlockCompressor(ctxPtr->params.strategy, ctxPtr->lowLimit < ctxPtr->dictLimit);
while (remaining)
{
if (ctxPtr->dictLimit < ctxPtr->lowLimit) ctxPtr->dictLimit = ctxPtr->lowLimit;
}
- //cSize = blockCompressor(ctxPtr, op+3, maxDstSize-3, ip, blockSize);
cSize = ZSTD_compressBlock(ctxPtr, op+3, maxDstSize-3, ip, blockSize);
if (ZSTD_isError(cSize)) return cSize;
const BYTE* const ip = (const BYTE*) src;
/* preemptive overflow correction */
- if (zc->lowLimit > (1<<30) )
+ if ((zc->base > (const BYTE*)dst) || (zc->lowLimit > (1<<30) ))
{
- U32 correction = zc->lowLimit;
+ U32 correction = zc->lowLimit-1;
ZSTD_reduceIndex(zc, correction);
zc->base += correction;
zc->dictBase += correction;
ZSTD_parameters params;
winnerInfo_t winner;
BMK_result_t candidate;
- const size_t blockSize = g_blockSize ? g_blockSize : inFileSize;
+ const size_t blockSize = g_blockSize ? g_blockSize : benchedSize;
int i;
/* init */
for (i=1; i<=maxSeeds; i++)
{
params = ZSTD_getParams(i, blockSize);
- BMK_benchParam(&candidate, origBuff, inFileSize, ctx, params);
+ BMK_benchParam(&candidate, origBuff, benchedSize, ctx, params);
if ( (candidate.cSize < winner.result.cSize)
||((candidate.cSize == winner.result.cSize) && (candidate.cSpeed > winner.result.cSpeed)) )
{
winner.params = params;
winner.result = candidate;
- BMK_printWinner(stdout, i, winner.result, winner.params, inFileSize);
+ BMK_printWinner(stdout, i, winner.result, winner.params, benchedSize);
}
}
}
- BMK_printWinner(stdout, 99, winner.result, winner.params, inFileSize);
+ BMK_printWinner(stdout, 99, winner.result, winner.params, benchedSize);
/* start tests */
{
/* test */
NB_TESTS_PLAYED(params)++;
- BMK_benchParam(&candidate, origBuff, inFileSize, ctx, params);
+ BMK_benchParam(&candidate, origBuff, benchedSize, ctx, params);
/* improvement found => new winner */
if ( (candidate.cSize < winner.result.cSize)
{
winner.params = params;
winner.result = candidate;
- BMK_printWinner(stdout, 99, winner.result, winner.params, inFileSize);
+ BMK_printWinner(stdout, 99, winner.result, winner.params, benchedSize);
}
} while (BMK_GetMilliSpan(milliStart) < g_grillDuration);
}
/* end summary */
- BMK_printWinner(stdout, 99, winner.result, winner.params, inFileSize);
+ BMK_printWinner(stdout, 99, winner.result, winner.params, benchedSize);
DISPLAY("grillParams size - optimizer completed \n");
/* clean up*/
if (filenamesStart==0)
result = benchSample();
- else
+ else
{
if (optimizer)
result = optimizeForSize(input_filename);