U32 rep[ZSTD_REP_INIT];
} ZSTD_optimal_t;
+#if ZSTD_OPT_DEBUG == 3
+ #include ".debug/zstd_stats.h"
+#else
+ struct ZSTD_stats_s { U32 unused; };
+ MEM_STATIC void ZSTD_statsPrint(ZSTD_stats_t* stats, U32 searchLength) { (void)stats; (void)searchLength; }
+ MEM_STATIC void ZSTD_statsInit(ZSTD_stats_t* stats) { (void)stats; }
+ MEM_STATIC void ZSTD_statsResetFreqs(ZSTD_stats_t* stats) { (void)stats; }
+ MEM_STATIC void ZSTD_statsUpdatePrices(ZSTD_stats_t* stats, size_t litLength, const BYTE* literals, size_t offset, size_t matchLength) { (void)stats; (void)litLength; (void)literals; (void)offset; (void)matchLength; }
+#endif // #if ZSTD_OPT_DEBUG == 3
+
typedef struct {
void* buffer;
U32* offsetStart;
U32 cachedPrice;
U32 cachedLitLength;
const BYTE* cachedLiterals;
- ZSTD_stats_t* stats;
+ ZSTD_stats_t stats;
} seqStore_t;
const seqStore_t* ZSTD_getSeqStore(const ZSTD_CCtx* ctx);
#endif
-#if ZSTD_OPT_DEBUG == 3
-
/*-*************************************
* Types
***************************************/
stats->totalLitSum += litLength;
}
-#else
- struct ZSTD_stats_s { U32 unused; };
- MEM_STATIC ZSTD_stats_t* ZSTD_statsAlloc(void) { return NULL; }
- MEM_STATIC void ZSTD_statsFree(struct ZSTD_stats_s* stats) { (void)stats; }
- MEM_STATIC void ZSTD_statsPrint(ZSTD_stats_t* stats, U32 searchLength) { (void)stats; (void)searchLength; }
- MEM_STATIC void ZSTD_statsInit(ZSTD_stats_t* stats) { (void)stats; }
- MEM_STATIC void ZSTD_statsResetFreqs(ZSTD_stats_t* stats) { (void)stats; }
- MEM_STATIC void ZSTD_statsUpdatePrices(ZSTD_stats_t* stats, size_t litLength, const BYTE* literals, size_t offset, size_t matchLength) { (void)stats; (void)litLength; (void)literals; (void)offset; (void)matchLength; }
-#endif // #if ZSTD_OPT_DEBUG == 3
-
#if defined (__cplusplus)
}
#include "fse_static.h"
#include "huf_static.h"
#include "zstd_internal.h"
-#include ".debug/zstd_stats.h"
/*-*************************************
printf("Cpos %6u :%5u literals & match %3u bytes at distance %6u \n",
pos, (U32)litLength, (U32)matchCode+MINMATCH, (U32)offsetCode);
#endif
- ZSTD_statsUpdatePrices(seqStorePtr->stats, litLength, literals, offsetCode, matchCode);
+ ZSTD_statsUpdatePrices(&seqStorePtr->stats, litLength, literals, offsetCode, matchCode);
/* copy Literals */
ZSTD_wildcopy(seqStorePtr->lit, literals, litLength);
{ size_t const lastLLSize = iend - anchor;
memcpy(seqStorePtr->lit, anchor, lastLLSize);
seqStorePtr->lit += lastLLSize;
- ZSTD_statsUpdatePrices(seqStorePtr->stats, lastLLSize, anchor, 0, 0);
+ ZSTD_statsUpdatePrices(&seqStorePtr->stats, lastLLSize, anchor, 0, 0);
}
}
BYTE* const ostart = (BYTE*)dst;
BYTE* op = ostart;
const U32 maxDist = 1 << zc->params.cParams.windowLog;
- ZSTD_stats_t* stats = ZSTD_statsAlloc();
- zc->seqStore.stats = stats;
+ ZSTD_stats_t* stats = &zc->seqStore.stats;
ZSTD_statsInit(stats);
while (remaining) {
size_t cSize;
ZSTD_statsResetFreqs(stats);
- if (dstCapacity < ZSTD_blockHeaderSize + MIN_CBLOCK_SIZE) { ZSTD_statsFree(stats); return ERROR(dstSize_tooSmall); } /* not enough space to store compressed block */
+ if (dstCapacity < ZSTD_blockHeaderSize + MIN_CBLOCK_SIZE) return ERROR(dstSize_tooSmall); /* not enough space to store compressed block */
if (remaining < blockSize) blockSize = remaining;
if ((U32)(ip+blockSize - zc->base) > zc->loadedDictEnd + maxDist) {
}
cSize = ZSTD_compressBlock_internal(zc, op+ZSTD_blockHeaderSize, dstCapacity-ZSTD_blockHeaderSize, ip, blockSize);
- if (ZSTD_isError(cSize)) { ZSTD_statsFree(stats); return cSize; }
+ if (ZSTD_isError(cSize)) return cSize;
if (cSize == 0) { /* block is not compressible */
cSize = ZSTD_noCompressBlock(op, dstCapacity, ip, blockSize);
- if (ZSTD_isError(cSize)) { ZSTD_statsFree(stats); return cSize; }
+ if (ZSTD_isError(cSize)) return cSize;
} else {
op[0] = (BYTE)(cSize>>16);
op[1] = (BYTE)(cSize>>8);
}
ZSTD_statsPrint(stats, zc->params.cParams.searchLength);
- ZSTD_statsFree(stats);
return op-ostart;
}
/*_*******************************************************
* Bench functions
*********************************************************/
-void* BMK_allocFunction(size_t size)
-{
- void* address = malloc(size);
- /* printf("alloc %p, %d \n", address, (int)size); */
- return address;
-}
-
-void BMK_freeFunction(void* address)
-{
-/* printf("free %p \n", address); */
- free(address);
-}
-
static size_t benchMem(const void* src, size_t srcSize, U32 benchNb)
{
BYTE* dstBuff;
BYTE* buff2;
const char* benchName;
size_t (*benchFunction)(void* dst, size_t dstSize, void* verifBuff, const void* src, size_t srcSize);
- ZSTD_customMem customMem = { BMK_allocFunction, BMK_freeFunction };
double bestTime = 100000000.;
/* Selection */
benchFunction = local_ZBUFF_compress; benchName = "ZBUFF_compressContinue";
break;
case 42:
- benchFunction = local_ZBUFF_compress; benchName = "ZBUFF_createCCtx_advanced/ZBUFF_compressContinue";
- break;
- case 43:
benchFunction = local_ZBUFF_decompress; benchName = "ZBUFF_decompressContinue";
break;
- case 44:
- benchFunction = local_ZBUFF_decompress; benchName = "ZBUFF_createDCtx_advanced/ZBUFF_decompressContinue";
- break;
default :
return 0;
}
if (g_zbcc==NULL) g_zbcc = ZBUFF_createCCtx();
break;
case 42 :
- if (g_zbcc==NULL) g_zbcc = ZBUFF_createCCtx_advanced(customMem);
- break;
- case 43 :
if (g_zbdc==NULL) g_zbdc = ZBUFF_createDCtx();
g_cSize = ZSTD_compress(buff2, dstBuffSize, src, srcSize, 1);
break;
- case 44 :
- if (g_zbdc==NULL) g_zbdc = ZBUFF_createDCtx_advanced(customMem);
- g_cSize = ZSTD_compress(buff2, dstBuffSize, src, srcSize, 1);
- break;
/* test functions */
/* by convention, test functions can be added > 100 */
averageTime = (((double)BMK_clockSpan(clockStart)) / CLOCKS_PER_SEC) / nbRounds;
if (averageTime < bestTime) bestTime = averageTime;
DISPLAY("%2i- %-30.30s : %7.1f MB/s (%9u)\r", loopNb, benchName, (double)srcSize / (1 MB) / bestTime, (U32)benchResult);
- }
-
- /* free allocated structures */
- switch(benchNb)
- {
- case 11 :
- if (g_zcc) { ZSTD_freeCCtx(g_zcc); g_zcc=NULL; }
- break;
- case 12 :
- case 31:
- case 32:
- if (g_zdc) { ZSTD_freeDCtx(g_zdc); g_zdc=NULL; }
- break;
- case 41 :
- case 42 :
- if (g_zbcc) { ZBUFF_freeCCtx(g_zbcc); g_zbcc=NULL; }
- break;
- case 43 :
- case 44 :
- if (g_zbdc) { ZBUFF_freeDCtx(g_zbdc); g_zbdc=NULL; }
- break;
- default : ;
- } }
+ }}
DISPLAY("%2u\n", benchNb);
_cleanOut: