mirror of
https://github.com/facebook/zstd.git
synced 2025-07-30 22:23:13 +03:00
Remove ctx from benchMem
This commit is contained in:
@ -708,7 +708,6 @@ BMK_return_t BMK_benchMemAdvanced(const void* srcBuffer, size_t srcSize,
|
|||||||
const size_t* fileSizes, unsigned nbFiles,
|
const size_t* fileSizes, unsigned nbFiles,
|
||||||
const int cLevel, const ZSTD_compressionParameters* comprParams,
|
const int cLevel, const ZSTD_compressionParameters* comprParams,
|
||||||
const void* dictBuffer, size_t dictBufferSize,
|
const void* dictBuffer, size_t dictBufferSize,
|
||||||
ZSTD_CCtx* ctx, ZSTD_DCtx* dctx,
|
|
||||||
int displayLevel, const char* displayName, const BMK_advancedParams_t* adv)
|
int displayLevel, const char* displayName, const BMK_advancedParams_t* adv)
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -730,6 +729,9 @@ BMK_return_t BMK_benchMemAdvanced(const void* srcBuffer, size_t srcSize,
|
|||||||
BMK_timedFnState_t* timeStateCompress = BMK_createTimeState(adv->nbSeconds);
|
BMK_timedFnState_t* timeStateCompress = BMK_createTimeState(adv->nbSeconds);
|
||||||
BMK_timedFnState_t* timeStateDecompress = 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);
|
const size_t maxCompressedSize = dstCapacity ? dstCapacity : ZSTD_compressBound(srcSize) + (maxNbBlocks * 1024);
|
||||||
|
|
||||||
void* const internalDstBuffer = dstBuffer ? NULL : malloc(maxCompressedSize);
|
void* const internalDstBuffer = dstBuffer ? NULL : malloc(maxCompressedSize);
|
||||||
@ -756,6 +758,9 @@ BMK_return_t BMK_benchMemAdvanced(const void* srcBuffer, size_t srcSize,
|
|||||||
BMK_freeTimeState(timeStateCompress);
|
BMK_freeTimeState(timeStateCompress);
|
||||||
BMK_freeTimeState(timeStateDecompress);
|
BMK_freeTimeState(timeStateDecompress);
|
||||||
|
|
||||||
|
ZSTD_freeCCtx(ctx);
|
||||||
|
ZSTD_freeDCtx(dctx);
|
||||||
|
|
||||||
free(internalDstBuffer);
|
free(internalDstBuffer);
|
||||||
free(resultBuffer);
|
free(resultBuffer);
|
||||||
|
|
||||||
@ -781,7 +786,6 @@ BMK_return_t BMK_benchMem(const void* srcBuffer, size_t srcSize,
|
|||||||
const size_t* fileSizes, unsigned nbFiles,
|
const size_t* fileSizes, unsigned nbFiles,
|
||||||
const int cLevel, const ZSTD_compressionParameters* comprParams,
|
const int cLevel, const ZSTD_compressionParameters* comprParams,
|
||||||
const void* dictBuffer, size_t dictBufferSize,
|
const void* dictBuffer, size_t dictBufferSize,
|
||||||
ZSTD_CCtx* ctx, ZSTD_DCtx* dctx,
|
|
||||||
int displayLevel, const char* displayName) {
|
int displayLevel, const char* displayName) {
|
||||||
|
|
||||||
const BMK_advancedParams_t adv = BMK_initAdvancedParams();
|
const BMK_advancedParams_t adv = BMK_initAdvancedParams();
|
||||||
@ -790,35 +794,9 @@ BMK_return_t BMK_benchMem(const void* srcBuffer, size_t srcSize,
|
|||||||
fileSizes, nbFiles,
|
fileSizes, nbFiles,
|
||||||
cLevel, comprParams,
|
cLevel, comprParams,
|
||||||
dictBuffer, dictBufferSize,
|
dictBuffer, dictBufferSize,
|
||||||
ctx, dctx,
|
|
||||||
displayLevel, displayName, &adv);
|
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)
|
static size_t BMK_findMaxMem(U64 requiredMem)
|
||||||
{
|
{
|
||||||
size_t const step = 64 MB;
|
size_t const step = 64 MB;
|
||||||
@ -859,12 +837,12 @@ static BMK_return_t BMK_benchCLevel(const void* srcBuffer, size_t benchedSize,
|
|||||||
if (displayLevel == 1 && !adv->additionalParam)
|
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));
|
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,
|
res = BMK_benchMemAdvanced(srcBuffer, benchedSize,
|
||||||
fileSizes, nbFiles,
|
NULL, 0,
|
||||||
cLevel, comprParams,
|
fileSizes, nbFiles,
|
||||||
dictBuffer, dictBufferSize,
|
cLevel, comprParams,
|
||||||
displayLevel, displayName,
|
dictBuffer, dictBufferSize,
|
||||||
adv);
|
displayLevel, displayName, adv);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
@ -126,8 +126,6 @@ BMK_return_t BMK_syntheticTest(int cLevel, double compressibility,
|
|||||||
* comprParams - basic compression parameters
|
* comprParams - basic compression parameters
|
||||||
* dictBuffer - a dictionary if used, null otherwise
|
* dictBuffer - a dictionary if used, null otherwise
|
||||||
* dictBufferSize - size of dictBuffer, 0 otherwise
|
* dictBufferSize - size of dictBuffer, 0 otherwise
|
||||||
* ctx - Compression Context (must be provided)
|
|
||||||
* dctx - Decompression Context (must be provided)
|
|
||||||
* diplayLevel - see BMK_benchFiles
|
* diplayLevel - see BMK_benchFiles
|
||||||
* displayName - name used by display
|
* displayName - name used by display
|
||||||
* return
|
* return
|
||||||
@ -139,7 +137,6 @@ BMK_return_t BMK_benchMem(const void* srcBuffer, size_t srcSize,
|
|||||||
const size_t* fileSizes, unsigned nbFiles,
|
const size_t* fileSizes, unsigned nbFiles,
|
||||||
const int cLevel, const ZSTD_compressionParameters* comprParams,
|
const int cLevel, const ZSTD_compressionParameters* comprParams,
|
||||||
const void* dictBuffer, size_t dictBufferSize,
|
const void* dictBuffer, size_t dictBufferSize,
|
||||||
ZSTD_CCtx* ctx, ZSTD_DCtx* dctx,
|
|
||||||
int displayLevel, const char* displayName);
|
int displayLevel, const char* displayName);
|
||||||
|
|
||||||
/* See benchMem for normal parameter uses and return, see advancedParams_t for adv
|
/* See benchMem for normal parameter uses and return, see advancedParams_t for adv
|
||||||
@ -151,7 +148,6 @@ BMK_return_t BMK_benchMemAdvanced(const void* srcBuffer, size_t srcSize,
|
|||||||
const size_t* fileSizes, unsigned nbFiles,
|
const size_t* fileSizes, unsigned nbFiles,
|
||||||
const int cLevel, const ZSTD_compressionParameters* comprParams,
|
const int cLevel, const ZSTD_compressionParameters* comprParams,
|
||||||
const void* dictBuffer, size_t dictBufferSize,
|
const void* dictBuffer, size_t dictBufferSize,
|
||||||
ZSTD_CCtx* ctx, ZSTD_DCtx* dctx,
|
|
||||||
int displayLevel, const char* displayName,
|
int displayLevel, const char* displayName,
|
||||||
const BMK_advancedParams_t* adv);
|
const BMK_advancedParams_t* adv);
|
||||||
|
|
||||||
|
@ -300,10 +300,9 @@ const char* g_stratName[ZSTD_btultra+1] = {
|
|||||||
static int
|
static int
|
||||||
BMK_benchParam1(BMK_result_t* resultPtr,
|
BMK_benchParam1(BMK_result_t* resultPtr,
|
||||||
const void* srcBuffer, size_t srcSize,
|
const void* srcBuffer, size_t srcSize,
|
||||||
ZSTD_CCtx* ctx, ZSTD_DCtx* dctx,
|
|
||||||
const ZSTD_compressionParameters cParams) {
|
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;
|
*resultPtr = res.result;
|
||||||
return res.error;
|
return res.error;
|
||||||
}
|
}
|
||||||
@ -352,7 +351,7 @@ static int
|
|||||||
BMK_benchParam(BMK_result_t* resultPtr,
|
BMK_benchParam(BMK_result_t* resultPtr,
|
||||||
const buffers_t buf, const contexts_t ctx,
|
const buffers_t buf, const contexts_t ctx,
|
||||||
const ZSTD_compressionParameters cParams) {
|
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;
|
*resultPtr = res.result;
|
||||||
return res.error;
|
return res.error;
|
||||||
}
|
}
|
||||||
@ -724,14 +723,13 @@ static void BMK_init_level_constraints(int bytePerSec_level1)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int BMK_seed(winnerInfo_t* winners, const ZSTD_compressionParameters params,
|
static int BMK_seed(winnerInfo_t* winners, const ZSTD_compressionParameters params,
|
||||||
const void* srcBuffer, size_t srcSize,
|
const void* srcBuffer, size_t srcSize)
|
||||||
ZSTD_CCtx* ctx, ZSTD_DCtx* dctx)
|
|
||||||
{
|
{
|
||||||
BMK_result_t testResult;
|
BMK_result_t testResult;
|
||||||
int better = 0;
|
int better = 0;
|
||||||
int cLevel;
|
int cLevel;
|
||||||
|
|
||||||
BMK_benchParam1(&testResult, srcBuffer, srcSize, ctx, dctx, params);
|
BMK_benchParam1(&testResult, srcBuffer, srcSize, params);
|
||||||
|
|
||||||
|
|
||||||
for (cLevel = 1; cLevel <= NB_LEVELS_TRACKED; cLevel++) {
|
for (cLevel = 1; cLevel <= NB_LEVELS_TRACKED; cLevel++) {
|
||||||
@ -1104,8 +1102,7 @@ static BYTE* NB_TESTS_PLAYED(ZSTD_compressionParameters p) {
|
|||||||
|
|
||||||
static void playAround(FILE* f, winnerInfo_t* winners,
|
static void playAround(FILE* f, winnerInfo_t* winners,
|
||||||
ZSTD_compressionParameters params,
|
ZSTD_compressionParameters params,
|
||||||
const void* srcBuffer, size_t srcSize,
|
const void* srcBuffer, size_t srcSize)
|
||||||
ZSTD_CCtx* ctx, ZSTD_DCtx* dctx)
|
|
||||||
{
|
{
|
||||||
int nbVariations = 0;
|
int nbVariations = 0;
|
||||||
UTIL_time_t const clockStart = UTIL_getTime();
|
UTIL_time_t const clockStart = UTIL_getTime();
|
||||||
@ -1126,11 +1123,11 @@ static void playAround(FILE* f, winnerInfo_t* winners,
|
|||||||
/* test */
|
/* test */
|
||||||
b = NB_TESTS_PLAYED(p);
|
b = NB_TESTS_PLAYED(p);
|
||||||
(*b)++;
|
(*b)++;
|
||||||
if (!BMK_seed(winners, p, srcBuffer, srcSize, ctx, dctx)) continue;
|
if (!BMK_seed(winners, p, srcBuffer, srcSize)) continue;
|
||||||
|
|
||||||
/* improvement found => search more */
|
/* improvement found => search more */
|
||||||
BMK_printWinners(f, winners, srcSize);
|
BMK_printWinners(f, winners, srcSize);
|
||||||
playAround(f, winners, p, srcBuffer, srcSize, ctx, dctx);
|
playAround(f, winners, p, srcBuffer, srcSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1177,31 +1174,30 @@ static void randomConstrainedParams(ZSTD_compressionParameters* pc, varInds_t* v
|
|||||||
|
|
||||||
static void BMK_selectRandomStart(
|
static void BMK_selectRandomStart(
|
||||||
FILE* f, winnerInfo_t* winners,
|
FILE* f, winnerInfo_t* winners,
|
||||||
const void* srcBuffer, size_t srcSize,
|
const void* srcBuffer, size_t srcSize)
|
||||||
ZSTD_CCtx* ctx, ZSTD_DCtx* dctx)
|
|
||||||
{
|
{
|
||||||
U32 const id = FUZ_rand(&g_rand) % (NB_LEVELS_TRACKED+1);
|
U32 const id = FUZ_rand(&g_rand) % (NB_LEVELS_TRACKED+1);
|
||||||
if ((id==0) || (winners[id].params.windowLog==0)) {
|
if ((id==0) || (winners[id].params.windowLog==0)) {
|
||||||
/* use some random entry */
|
/* use some random entry */
|
||||||
ZSTD_compressionParameters const p = ZSTD_adjustCParams(randomParams(), srcSize, 0);
|
ZSTD_compressionParameters const p = ZSTD_adjustCParams(randomParams(), srcSize, 0);
|
||||||
playAround(f, winners, p, srcBuffer, srcSize, ctx, dctx);
|
playAround(f, winners, p, srcBuffer, srcSize);
|
||||||
} else {
|
} 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;
|
BMK_result_t testResult;
|
||||||
g_params = ZSTD_adjustCParams(g_params, srcSize, 0);
|
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,
|
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);
|
(double)testResult.cSpeed / 1000000, (double)testResult.dSpeed / 1000000);
|
||||||
return;
|
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;
|
ZSTD_compressionParameters params;
|
||||||
winnerInfo_t winners[NB_LEVELS_TRACKED+1];
|
winnerInfo_t winners[NB_LEVELS_TRACKED+1];
|
||||||
@ -1220,7 +1216,7 @@ static void BMK_benchFullTable(ZSTD_CCtx* cctx, ZSTD_DCtx* dctx, const void* src
|
|||||||
/* baseline config for level 1 */
|
/* baseline config for level 1 */
|
||||||
ZSTD_compressionParameters const l1params = ZSTD_getCParams(1, blockSize, 0);
|
ZSTD_compressionParameters const l1params = ZSTD_getCParams(1, blockSize, 0);
|
||||||
BMK_result_t testResult;
|
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));
|
BMK_init_level_constraints((int)((testResult.cSpeed * 31) / 32));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1229,14 +1225,14 @@ static void BMK_benchFullTable(ZSTD_CCtx* cctx, ZSTD_DCtx* dctx, const void* src
|
|||||||
int i;
|
int i;
|
||||||
for (i=0; i<=maxSeeds; i++) {
|
for (i=0; i<=maxSeeds; i++) {
|
||||||
params = ZSTD_getCParams(i, blockSize, 0);
|
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);
|
BMK_printWinners(f, winners, srcSize);
|
||||||
|
|
||||||
/* start tests */
|
/* start tests */
|
||||||
{ const time_t grillStart = time(NULL);
|
{ const time_t grillStart = time(NULL);
|
||||||
do {
|
do {
|
||||||
BMK_selectRandomStart(f, winners, srcBuffer, srcSize, cctx, dctx);
|
BMK_selectRandomStart(f, winners, srcBuffer, srcSize);
|
||||||
} while (BMK_timeSpan(grillStart) < g_grillDuration_s);
|
} while (BMK_timeSpan(grillStart) < g_grillDuration_s);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1248,21 +1244,12 @@ static void BMK_benchFullTable(ZSTD_CCtx* cctx, ZSTD_DCtx* dctx, const void* src
|
|||||||
fclose(f);
|
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)
|
if (g_singleRun)
|
||||||
return BMK_benchOnce(cctx, dctx, srcBuffer, srcSize);
|
return BMK_benchOnce(srcBuffer, srcSize);
|
||||||
else
|
else
|
||||||
return BMK_benchFullTable(cctx, dctx, srcBuffer, srcSize);
|
return BMK_benchFullTable(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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1280,7 +1267,7 @@ static int benchSample(void)
|
|||||||
/* bench */
|
/* bench */
|
||||||
DISPLAY("\r%79s\r", "");
|
DISPLAY("\r%79s\r", "");
|
||||||
DISPLAY("using %s %i%%: \n", name, (int)(g_compressibility*100));
|
DISPLAY("using %s %i%%: \n", name, (int)(g_compressibility*100));
|
||||||
BMK_benchMemCCtxInit(origBuff, benchedSize);
|
BMK_benchMemInit(origBuff, benchedSize);
|
||||||
|
|
||||||
free(origBuff);
|
free(origBuff);
|
||||||
return 0;
|
return 0;
|
||||||
@ -1338,7 +1325,7 @@ int benchFiles(const char** fileNamesTable, int nbFiles)
|
|||||||
/* bench */
|
/* bench */
|
||||||
DISPLAY("\r%79s\r", "");
|
DISPLAY("\r%79s\r", "");
|
||||||
DISPLAY("using %s : \n", inFileName);
|
DISPLAY("using %s : \n", inFileName);
|
||||||
BMK_benchMemCCtxInit(origBuff, benchedSize);
|
BMK_benchMemInit(origBuff, benchedSize);
|
||||||
|
|
||||||
/* clean */
|
/* clean */
|
||||||
free(origBuff);
|
free(origBuff);
|
||||||
|
Reference in New Issue
Block a user