const size_t* fileSizes, unsigned nbFiles,
const int cLevel, const ZSTD_compressionParameters* comprParams,
const void* dictBuffer, size_t dictBufferSize,
- ZSTD_CCtx* ctx, ZSTD_DCtx* dctx,
int displayLevel, const char* displayName, const BMK_advancedParams_t* adv)
{
BMK_timedFnState_t* timeStateCompress = BMK_createTimeState(adv->nbSeconds);
BMK_timedFnState_t* timeStateDecompress = BMK_createTimeState(adv->nbSeconds);
+ ZSTD_CCtx* ctx = ZSTD_createCCtx();
+ ZSTD_DCtx* dctx = ZSTD_createDCtx();
+
const size_t maxCompressedSize = dstCapacity ? dstCapacity : ZSTD_compressBound(srcSize) + (maxNbBlocks * 1024);
void* const internalDstBuffer = dstBuffer ? NULL : malloc(maxCompressedSize);
BMK_freeTimeState(timeStateCompress);
BMK_freeTimeState(timeStateDecompress);
+ ZSTD_freeCCtx(ctx);
+ ZSTD_freeDCtx(dctx);
+
free(internalDstBuffer);
free(resultBuffer);
const size_t* fileSizes, unsigned nbFiles,
const int cLevel, const ZSTD_compressionParameters* comprParams,
const void* dictBuffer, size_t dictBufferSize,
- ZSTD_CCtx* ctx, ZSTD_DCtx* dctx,
int displayLevel, const char* displayName) {
const BMK_advancedParams_t adv = BMK_initAdvancedParams();
fileSizes, nbFiles,
cLevel, comprParams,
dictBuffer, dictBufferSize,
- ctx, dctx,
displayLevel, displayName, &adv);
}
-static BMK_return_t BMK_benchMemCtxless(const void* srcBuffer, size_t srcSize,
- const size_t* fileSizes, unsigned nbFiles,
- int cLevel, const ZSTD_compressionParameters* const comprParams,
- const void* dictBuffer, size_t dictBufferSize,
- int displayLevel, const char* displayName,
- const BMK_advancedParams_t* const adv)
-{
- BMK_return_t res;
- ZSTD_CCtx* ctx = ZSTD_createCCtx();
- ZSTD_DCtx* dctx = ZSTD_createDCtx();
- if(ctx == NULL || dctx == NULL) {
- EXM_THROW(12, BMK_return_t, "not enough memory for contexts");
- }
- res = BMK_benchMemAdvanced(srcBuffer, srcSize,
- NULL, 0,
- fileSizes, nbFiles,
- cLevel, comprParams,
- dictBuffer, dictBufferSize,
- ctx, dctx,
- displayLevel, displayName, adv);
- ZSTD_freeCCtx(ctx);
- ZSTD_freeDCtx(dctx);
- return res;
-}
-
static size_t BMK_findMaxMem(U64 requiredMem)
{
size_t const step = 64 MB;
if (displayLevel == 1 && !adv->additionalParam)
DISPLAY("bench %s %s: input %u bytes, %u seconds, %u KB blocks\n", ZSTD_VERSION_STRING, ZSTD_GIT_COMMIT_STRING, (U32)benchedSize, adv->nbSeconds, (U32)(adv->blockSize>>10));
- res = BMK_benchMemCtxless(srcBuffer, benchedSize,
- fileSizes, nbFiles,
- cLevel, comprParams,
- dictBuffer, dictBufferSize,
- displayLevel, displayName,
- adv);
+ res = BMK_benchMemAdvanced(srcBuffer, benchedSize,
+ NULL, 0,
+ fileSizes, nbFiles,
+ cLevel, comprParams,
+ dictBuffer, dictBufferSize,
+ displayLevel, displayName, adv);
return res;
}
static int
BMK_benchParam1(BMK_result_t* resultPtr,
const void* srcBuffer, size_t srcSize,
- ZSTD_CCtx* ctx, ZSTD_DCtx* dctx,
const ZSTD_compressionParameters cParams) {
- BMK_return_t res = BMK_benchMem(srcBuffer,srcSize, &srcSize, 1, 0, &cParams, NULL, 0, ctx, dctx, 0, "File");
+ BMK_return_t res = BMK_benchMem(srcBuffer,srcSize, &srcSize, 1, 0, &cParams, NULL, 0, 0, "File");
*resultPtr = res.result;
return res.error;
}
BMK_benchParam(BMK_result_t* resultPtr,
const buffers_t buf, const contexts_t ctx,
const ZSTD_compressionParameters cParams) {
- BMK_return_t res = BMK_benchMem(buf.srcPtrs[0], buf.srcSize, buf.srcSizes, (unsigned)buf.nbBlocks, 0, &cParams, ctx.dictBuffer, ctx.dictSize, ctx.cctx, ctx.dctx, 0, "Files");
+ BMK_return_t res = BMK_benchMem(buf.srcPtrs[0], buf.srcSize, buf.srcSizes, (unsigned)buf.nbBlocks, 0, &cParams, ctx.dictBuffer, ctx.dictSize, 0, "Files");
*resultPtr = res.result;
return res.error;
}
}
static int BMK_seed(winnerInfo_t* winners, const ZSTD_compressionParameters params,
- const void* srcBuffer, size_t srcSize,
- ZSTD_CCtx* ctx, ZSTD_DCtx* dctx)
+ const void* srcBuffer, size_t srcSize)
{
BMK_result_t testResult;
int better = 0;
int cLevel;
- BMK_benchParam1(&testResult, srcBuffer, srcSize, ctx, dctx, params);
+ BMK_benchParam1(&testResult, srcBuffer, srcSize, params);
for (cLevel = 1; cLevel <= NB_LEVELS_TRACKED; cLevel++) {
static void playAround(FILE* f, winnerInfo_t* winners,
ZSTD_compressionParameters params,
- const void* srcBuffer, size_t srcSize,
- ZSTD_CCtx* ctx, ZSTD_DCtx* dctx)
+ const void* srcBuffer, size_t srcSize)
{
int nbVariations = 0;
UTIL_time_t const clockStart = UTIL_getTime();
/* test */
b = NB_TESTS_PLAYED(p);
(*b)++;
- if (!BMK_seed(winners, p, srcBuffer, srcSize, ctx, dctx)) continue;
+ if (!BMK_seed(winners, p, srcBuffer, srcSize)) continue;
/* improvement found => search more */
BMK_printWinners(f, winners, srcSize);
- playAround(f, winners, p, srcBuffer, srcSize, ctx, dctx);
+ playAround(f, winners, p, srcBuffer, srcSize);
}
}
static void BMK_selectRandomStart(
FILE* f, winnerInfo_t* winners,
- const void* srcBuffer, size_t srcSize,
- ZSTD_CCtx* ctx, ZSTD_DCtx* dctx)
+ const void* srcBuffer, size_t srcSize)
{
U32 const id = FUZ_rand(&g_rand) % (NB_LEVELS_TRACKED+1);
if ((id==0) || (winners[id].params.windowLog==0)) {
/* use some random entry */
ZSTD_compressionParameters const p = ZSTD_adjustCParams(randomParams(), srcSize, 0);
- playAround(f, winners, p, srcBuffer, srcSize, ctx, dctx);
+ playAround(f, winners, p, srcBuffer, srcSize);
} else {
- playAround(f, winners, winners[id].params, srcBuffer, srcSize, ctx, dctx);
+ playAround(f, winners, winners[id].params, srcBuffer, srcSize);
}
}
-static void BMK_benchOnce(ZSTD_CCtx* cctx, ZSTD_DCtx* dctx, const void* srcBuffer, size_t srcSize)
+static void BMK_benchOnce(const void* srcBuffer, size_t srcSize)
{
BMK_result_t testResult;
g_params = ZSTD_adjustCParams(g_params, srcSize, 0);
- BMK_benchParam1(&testResult, srcBuffer, srcSize, cctx, dctx, g_params);
+ BMK_benchParam1(&testResult, srcBuffer, srcSize, g_params);
DISPLAY("Compression Ratio: %.3f Compress Speed: %.1f MB/s Decompress Speed: %.1f MB/s\n", (double)srcSize / testResult.cSize,
(double)testResult.cSpeed / 1000000, (double)testResult.dSpeed / 1000000);
return;
}
-static void BMK_benchFullTable(ZSTD_CCtx* cctx, ZSTD_DCtx* dctx, const void* srcBuffer, size_t srcSize)
+static void BMK_benchFullTable(const void* srcBuffer, size_t srcSize)
{
ZSTD_compressionParameters params;
winnerInfo_t winners[NB_LEVELS_TRACKED+1];
/* baseline config for level 1 */
ZSTD_compressionParameters const l1params = ZSTD_getCParams(1, blockSize, 0);
BMK_result_t testResult;
- BMK_benchParam1(&testResult, srcBuffer, srcSize, cctx, dctx, l1params);
+ BMK_benchParam1(&testResult, srcBuffer, srcSize, l1params);
BMK_init_level_constraints((int)((testResult.cSpeed * 31) / 32));
}
int i;
for (i=0; i<=maxSeeds; i++) {
params = ZSTD_getCParams(i, blockSize, 0);
- BMK_seed(winners, params, srcBuffer, srcSize, cctx, dctx);
+ BMK_seed(winners, params, srcBuffer, srcSize);
} }
BMK_printWinners(f, winners, srcSize);
/* start tests */
{ const time_t grillStart = time(NULL);
do {
- BMK_selectRandomStart(f, winners, srcBuffer, srcSize, cctx, dctx);
+ BMK_selectRandomStart(f, winners, srcBuffer, srcSize);
} while (BMK_timeSpan(grillStart) < g_grillDuration_s);
}
fclose(f);
}
-static void BMK_benchMem_usingCCtx(ZSTD_CCtx* const cctx, ZSTD_DCtx* const dctx, const void* srcBuffer, size_t srcSize)
+static void BMK_benchMemInit(const void* srcBuffer, size_t srcSize)
{
if (g_singleRun)
- return BMK_benchOnce(cctx, dctx, srcBuffer, srcSize);
+ return BMK_benchOnce(srcBuffer, srcSize);
else
- return BMK_benchFullTable(cctx, dctx, srcBuffer, srcSize);
-}
-
-static void BMK_benchMemCCtxInit(const void* srcBuffer, size_t srcSize)
-{
- ZSTD_CCtx* const cctx = ZSTD_createCCtx();
- ZSTD_DCtx* const dctx = ZSTD_createDCtx();
- if (cctx==NULL || dctx==NULL) { DISPLAY("Context Creation failed \n"); exit(1); }
- BMK_benchMem_usingCCtx(cctx, dctx, srcBuffer, srcSize);
- ZSTD_freeCCtx(cctx);
+ return BMK_benchFullTable(srcBuffer, srcSize);
}
/* bench */
DISPLAY("\r%79s\r", "");
DISPLAY("using %s %i%%: \n", name, (int)(g_compressibility*100));
- BMK_benchMemCCtxInit(origBuff, benchedSize);
+ BMK_benchMemInit(origBuff, benchedSize);
free(origBuff);
return 0;
/* bench */
DISPLAY("\r%79s\r", "");
DISPLAY("using %s : \n", inFileName);
- BMK_benchMemCCtxInit(origBuff, benchedSize);
+ BMK_benchMemInit(origBuff, benchedSize);
/* clean */
free(origBuff);