From fd416f1eaf752ab70472d4f6fff5fc32ebaf86b5 Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Sat, 30 Jan 2016 03:14:15 +0100 Subject: [PATCH] added : ZSTD_compress_usingPreparedCCtx() --- NEWS | 2 +- lib/zstd_compress.c | 148 +++++++++++++++++++++++++++++++++++++++----- lib/zstd_static.h | 126 ++++++------------------------------- programs/bench.c | 47 ++++---------- 4 files changed, 168 insertions(+), 155 deletions(-) diff --git a/NEWS b/NEWS index cfbd6867b..ed414e23a 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,6 @@ v0.5.0 -Changed streaming & dictionary API New : dictionary builder utility +Changed : streaming & dictionary API v0.4.7 Improved : small compression speed improvement in HC mode diff --git a/lib/zstd_compress.c b/lib/zstd_compress.c index 31eb15912..bc78d2dd2 100644 --- a/lib/zstd_compress.c +++ b/lib/zstd_compress.c @@ -2143,20 +2143,6 @@ size_t ZSTD_compressBegin_advanced(ZSTD_CCtx* zc, } -/** ZSTD_getParams -* return ZSTD_parameters structure for a selected compression level and srcSize. -* srcSizeHint value is optional, select 0 if not known */ -ZSTD_parameters ZSTD_getParams(int compressionLevel, U64 srcSizeHint) -{ - ZSTD_parameters result; - int tableID = ((srcSizeHint-1) <= 256 KB) + ((srcSizeHint-1) <= 128 KB) + ((srcSizeHint-1) <= 16 KB); /* intentional underflow for srcSizeHint == 0 */ - if (compressionLevel<=0) compressionLevel = 1; - if (compressionLevel > ZSTD_MAX_CLEVEL) compressionLevel = ZSTD_MAX_CLEVEL; - result = ZSTD_defaultParameters[tableID][compressionLevel]; - result.srcSize = srcSizeHint; - return result; -} - size_t ZSTD_compressBegin_usingDict(ZSTD_CCtx* zc, const void* dict, size_t dictSize, int compressionLevel) { return ZSTD_compressBegin_advanced(zc, dict, dictSize, ZSTD_getParams(compressionLevel, 0)); @@ -2195,6 +2181,24 @@ size_t ZSTD_compressEnd(ZSTD_CCtx* zc, void* dst, size_t maxDstSize) return 3+hbSize; } + +size_t ZSTD_compress_usingPreparedCCtx(ZSTD_CCtx* cctx, const ZSTD_CCtx* preparedCCtx, + void* dst, size_t maxDstSize, + const void* src, size_t srcSize) +{ + size_t outSize; + size_t errorCode = ZSTD_copyCCtx(cctx, preparedCCtx); + if (ZSTD_isError(errorCode)) return errorCode; + errorCode = ZSTD_compressContinue(cctx, dst, maxDstSize, src, srcSize); + if (ZSTD_isError(errorCode)) return errorCode; + outSize = errorCode; + errorCode = ZSTD_compressEnd(cctx, (char*)dst+outSize, maxDstSize-outSize); + if (ZSTD_isError(errorCode)) return errorCode; + outSize += errorCode; + return outSize; +} + + size_t ZSTD_compress_advanced (ZSTD_CCtx* ctx, void* dst, size_t maxDstSize, const void* src, size_t srcSize, @@ -2243,3 +2247,119 @@ size_t ZSTD_compress(void* dst, size_t maxDstSize, const void* src, size_t srcSi return result; } + +/*- Pre-defined compression levels -*/ + +static const ZSTD_parameters ZSTD_defaultParameters[4][ZSTD_MAX_CLEVEL+1] = { +{ /* "default" */ + /* W, C, H, S, L, strat */ + { 0, 18, 12, 12, 1, 4, ZSTD_fast }, /* level 0 - never used */ + { 0, 19, 13, 14, 1, 7, ZSTD_fast }, /* level 1 */ + { 0, 19, 15, 16, 1, 6, ZSTD_fast }, /* level 2 */ + { 0, 20, 18, 20, 1, 6, ZSTD_fast }, /* level 3 */ + { 0, 21, 19, 21, 1, 6, ZSTD_fast }, /* level 4 */ + { 0, 20, 14, 18, 3, 5, ZSTD_greedy }, /* level 5 */ + { 0, 20, 18, 19, 3, 5, ZSTD_greedy }, /* level 6 */ + { 0, 21, 17, 20, 3, 5, ZSTD_lazy }, /* level 7 */ + { 0, 21, 19, 20, 3, 5, ZSTD_lazy }, /* level 8 */ + { 0, 21, 20, 20, 3, 5, ZSTD_lazy2 }, /* level 9 */ + { 0, 21, 19, 21, 4, 5, ZSTD_lazy2 }, /* level 10 */ + { 0, 22, 20, 22, 4, 5, ZSTD_lazy2 }, /* level 11 */ + { 0, 22, 20, 22, 5, 5, ZSTD_lazy2 }, /* level 12 */ + { 0, 22, 21, 22, 5, 5, ZSTD_lazy2 }, /* level 13 */ + { 0, 22, 22, 23, 5, 5, ZSTD_lazy2 }, /* level 14 */ + { 0, 23, 23, 23, 5, 5, ZSTD_lazy2 }, /* level 15 */ + { 0, 23, 21, 22, 5, 5, ZSTD_btlazy2 }, /* level 16 */ + { 0, 23, 24, 23, 4, 5, ZSTD_btlazy2 }, /* level 17 */ + { 0, 25, 24, 23, 5, 5, ZSTD_btlazy2 }, /* level 18 */ + { 0, 25, 26, 23, 5, 5, ZSTD_btlazy2 }, /* level 19 */ + { 0, 26, 27, 25, 9, 5, ZSTD_btlazy2 }, /* level 20 */ +}, +{ /* for srcSize <= 256 KB */ + /* W, C, H, S, L, strat */ + { 0, 18, 13, 14, 1, 7, ZSTD_fast }, /* level 0 - never used */ + { 0, 18, 14, 15, 1, 6, ZSTD_fast }, /* level 1 */ + { 0, 18, 14, 15, 1, 5, ZSTD_fast }, /* level 2 */ + { 0, 18, 12, 15, 3, 4, ZSTD_greedy }, /* level 3 */ + { 0, 18, 13, 15, 4, 4, ZSTD_greedy }, /* level 4 */ + { 0, 18, 14, 15, 5, 4, ZSTD_greedy }, /* level 5 */ + { 0, 18, 13, 15, 4, 4, ZSTD_lazy }, /* level 6 */ + { 0, 18, 14, 16, 5, 4, ZSTD_lazy }, /* level 7 */ + { 0, 18, 15, 16, 6, 4, ZSTD_lazy }, /* level 8 */ + { 0, 18, 15, 15, 7, 4, ZSTD_lazy }, /* level 9 */ + { 0, 18, 16, 16, 7, 4, ZSTD_lazy }, /* level 10 */ + { 0, 18, 16, 16, 8, 4, ZSTD_lazy }, /* level 11 */ + { 0, 18, 17, 16, 8, 4, ZSTD_lazy }, /* level 12 */ + { 0, 18, 17, 16, 9, 4, ZSTD_lazy }, /* level 13 */ + { 0, 18, 18, 16, 9, 4, ZSTD_lazy }, /* level 14 */ + { 0, 18, 17, 17, 9, 4, ZSTD_lazy2 }, /* level 15 */ + { 0, 18, 18, 18, 9, 4, ZSTD_lazy2 }, /* level 16 */ + { 0, 18, 18, 18, 10, 4, ZSTD_lazy2 }, /* level 17 */ + { 0, 18, 18, 18, 11, 4, ZSTD_lazy2 }, /* level 18 */ + { 0, 18, 18, 18, 12, 4, ZSTD_lazy2 }, /* level 19 */ + { 0, 18, 18, 18, 13, 4, ZSTD_lazy2 }, /* level 20 */ +}, +{ /* for srcSize <= 128 KB */ + /* 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, 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 */ + { 0, 17, 16, 17, 4, 4, ZSTD_lazy }, /* level 7 */ + { 0, 17, 16, 17, 4, 4, ZSTD_lazy2 }, /* level 8 */ + { 0, 17, 17, 16, 5, 4, ZSTD_lazy2 }, /* level 9 */ + { 0, 17, 17, 16, 6, 4, ZSTD_lazy2 }, /* level 10 */ + { 0, 17, 17, 16, 7, 4, ZSTD_lazy2 }, /* level 11 */ + { 0, 17, 17, 16, 8, 4, ZSTD_lazy2 }, /* level 12 */ + { 0, 17, 18, 16, 4, 4, ZSTD_btlazy2 }, /* level 13 */ + { 0, 17, 18, 16, 5, 4, ZSTD_btlazy2 }, /* level 14 */ + { 0, 17, 18, 16, 6, 4, ZSTD_btlazy2 }, /* level 15 */ + { 0, 17, 18, 16, 7, 4, ZSTD_btlazy2 }, /* level 16 */ + { 0, 17, 18, 16, 8, 4, ZSTD_btlazy2 }, /* level 17 */ + { 0, 17, 18, 16, 9, 4, ZSTD_btlazy2 }, /* level 18 */ + { 0, 17, 18, 16, 10, 4, ZSTD_btlazy2 }, /* level 19 */ + { 0, 17, 18, 18, 12, 4, ZSTD_btlazy2 }, /* level 20 */ +}, +{ /* for srcSize <= 16 KB */ + /* 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 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 */ + { 0, 14, 14, 13, 6, 5, ZSTD_lazy }, /* level 6 */ + { 0, 14, 14, 14, 7, 6, ZSTD_lazy }, /* level 7 */ + { 0, 14, 14, 14, 8, 4, ZSTD_lazy }, /* level 8 */ + { 0, 14, 14, 15, 9, 4, ZSTD_lazy }, /* level 9 */ + { 0, 14, 14, 15, 10, 4, ZSTD_lazy }, /* level 10 */ + { 0, 14, 15, 15, 6, 4, ZSTD_btlazy2 }, /* level 11 */ + { 0, 14, 15, 15, 7, 4, ZSTD_btlazy2 }, /* level 12 */ + { 0, 14, 15, 15, 8, 4, ZSTD_btlazy2 }, /* level 13 */ + { 0, 14, 15, 15, 9, 4, ZSTD_btlazy2 }, /* level 14 */ + { 0, 14, 15, 15, 10, 4, ZSTD_btlazy2 }, /* level 15 */ + { 0, 14, 15, 15, 11, 4, ZSTD_btlazy2 }, /* level 16 */ + { 0, 14, 15, 15, 12, 4, ZSTD_btlazy2 }, /* level 17 */ + { 0, 14, 15, 15, 13, 4, ZSTD_btlazy2 }, /* level 18 */ + { 0, 14, 15, 15, 14, 4, ZSTD_btlazy2 }, /* level 19 */ + { 0, 14, 15, 15, 15, 4, ZSTD_btlazy2 }, /* level 20 */ +}, +}; + +/*! ZSTD_getParams +* @return ZSTD_parameters structure for a selected compression level and srcSize. +* @srcSizeHint value is optional, select 0 if not known */ +ZSTD_parameters ZSTD_getParams(int compressionLevel, U64 srcSizeHint) +{ + ZSTD_parameters result; + int tableID = ((srcSizeHint-1) <= 256 KB) + ((srcSizeHint-1) <= 128 KB) + ((srcSizeHint-1) <= 16 KB); /* intentional underflow for srcSizeHint == 0 */ + if (compressionLevel<=0) compressionLevel = 1; + if (compressionLevel > ZSTD_MAX_CLEVEL) compressionLevel = ZSTD_MAX_CLEVEL; + result = ZSTD_defaultParameters[tableID][compressionLevel]; + result.srcSize = srcSizeHint; + return result; +} + diff --git a/lib/zstd_static.h b/lib/zstd_static.h index b985ce1e8..de2212d9d 100644 --- a/lib/zstd_static.h +++ b/lib/zstd_static.h @@ -82,16 +82,16 @@ typedef struct /* ************************************* * Advanced functions ***************************************/ -/** ZSTD_getParams -* return ZSTD_parameters structure for a selected compression level and srcSize. -* srcSizeHint value is optional, select 0 if not known */ +/*! ZSTD_getParams +* @return ZSTD_parameters structure for a selected compression level and srcSize. +* @srcSizeHint value is optional, select 0 if not known */ ZSTDLIB_API ZSTD_parameters ZSTD_getParams(int compressionLevel, U64 srcSizeHint); -/** ZSTD_validateParams +/*! ZSTD_validateParams * correct params value to remain within authorized range */ ZSTDLIB_API void ZSTD_validateParams(ZSTD_parameters* params); -/** ZSTD_compress_usingDict +/*! ZSTD_compress_usingDict * Same as ZSTD_compressCCtx(), loading a Dictionary content. * Note : dict can be NULL, in which case, it's equivalent to ZSTD_compressCCtx() */ ZSTDLIB_API size_t ZSTD_compress_usingDict(ZSTD_CCtx* ctx, @@ -100,7 +100,7 @@ ZSTDLIB_API size_t ZSTD_compress_usingDict(ZSTD_CCtx* ctx, const void* dict,size_t dictSize, int compressionLevel); -/** ZSTD_compress_advanced +/*! ZSTD_compress_advanced * Same as ZSTD_compress_usingDict(), with fine-tune control of each compression parameter */ ZSTDLIB_API size_t ZSTD_compress_advanced (ZSTD_CCtx* ctx, void* dst, size_t maxDstSize, @@ -108,6 +108,18 @@ ZSTDLIB_API size_t ZSTD_compress_advanced (ZSTD_CCtx* ctx, const void* dict,size_t dictSize, ZSTD_parameters params); +/*! ZSTD_compress_usingPreparedDCtx +* Same as ZSTD_compress_usingDict, but using a reference context preparedCCtx, where dictionary has been loaded. +* It avoids reloading the dictionary each time. +* preparedCCtx must have been properly initialized using ZSTD_compressBegin_usingDict() or ZSTD_compressBegin_advanced() +* Requires 2 contexts : 1 for reference, which will not be modified, and 1 to run the compression operation */ +ZSTDLIB_API size_t ZSTD_compress_usingPreparedCCtx( + ZSTD_CCtx* cctx, const ZSTD_CCtx* preparedCCtx, + void* dst, size_t maxDstSize, + const void* src, size_t srcSize); + +/*- Advanced Decompression functions -*/ + /*! ZSTD_decompress_usingDict * Same as ZSTD_decompressDCtx, using a Dictionary content as prefix * Note : dict can be NULL, in which case, it's equivalent to ZSTD_decompressDCtx() */ @@ -117,9 +129,9 @@ ZSTDLIB_API size_t ZSTD_decompress_usingDict(ZSTD_DCtx* dctx, const void* dict,size_t dictSize); /*! ZSTD_decompress_usingPreparedDCtx -* Same as ZSTD_decompress_usingDict, but using a reference context preparedDCtx, where dictionary has already been loaded into. +* Same as ZSTD_decompress_usingDict, but using a reference context preparedDCtx, where dictionary has been loaded. * It avoids reloading the dictionary each time. -* preparedDCtx must have been properly initialized using ZSTD_compressBegin_usingDict(). +* preparedDCtx must have been properly initialized using ZSTD_decompressBegin_usingDict(). * Requires 2 contexts : 1 for reference, which will not be modified, and 1 to run the decompression operation */ ZSTDLIB_API size_t ZSTD_decompress_usingPreparedDCtx( ZSTD_DCtx* dctx, const ZSTD_DCtx* preparedDCtx, @@ -233,104 +245,6 @@ size_t ZSTD_decompressBlock(ZSTD_DCtx* dctx, void* dst, size_t maxDstSize, const ***************************************/ #define ZSTD_MAX_CLEVEL 20 ZSTDLIB_API unsigned ZSTD_maxCLevel (void); -static const ZSTD_parameters ZSTD_defaultParameters[4][ZSTD_MAX_CLEVEL+1] = { -{ /* "default" */ - /* W, C, H, S, L, strat */ - { 0, 18, 12, 12, 1, 4, ZSTD_fast }, /* level 0 - never used */ - { 0, 19, 13, 14, 1, 7, ZSTD_fast }, /* level 1 */ - { 0, 19, 15, 16, 1, 6, ZSTD_fast }, /* level 2 */ - { 0, 20, 18, 20, 1, 6, ZSTD_fast }, /* level 3 */ - { 0, 21, 19, 21, 1, 6, ZSTD_fast }, /* level 4 */ - { 0, 20, 14, 18, 3, 5, ZSTD_greedy }, /* level 5 */ - { 0, 20, 18, 19, 3, 5, ZSTD_greedy }, /* level 6 */ - { 0, 21, 17, 20, 3, 5, ZSTD_lazy }, /* level 7 */ - { 0, 21, 19, 20, 3, 5, ZSTD_lazy }, /* level 8 */ - { 0, 21, 20, 20, 3, 5, ZSTD_lazy2 }, /* level 9 */ - { 0, 21, 19, 21, 4, 5, ZSTD_lazy2 }, /* level 10 */ - { 0, 22, 20, 22, 4, 5, ZSTD_lazy2 }, /* level 11 */ - { 0, 22, 20, 22, 5, 5, ZSTD_lazy2 }, /* level 12 */ - { 0, 22, 21, 22, 5, 5, ZSTD_lazy2 }, /* level 13 */ - { 0, 22, 22, 23, 5, 5, ZSTD_lazy2 }, /* level 14 */ - { 0, 23, 23, 23, 5, 5, ZSTD_lazy2 }, /* level 15 */ - { 0, 23, 21, 22, 5, 5, ZSTD_btlazy2 }, /* level 16 */ - { 0, 23, 24, 23, 4, 5, ZSTD_btlazy2 }, /* level 17 */ - { 0, 25, 24, 23, 5, 5, ZSTD_btlazy2 }, /* level 18 */ - { 0, 25, 26, 23, 5, 5, ZSTD_btlazy2 }, /* level 19 */ - { 0, 26, 27, 25, 9, 5, ZSTD_btlazy2 }, /* level 20 */ -}, -{ /* for srcSize <= 256 KB */ - /* W, C, H, S, L, strat */ - { 0, 18, 13, 14, 1, 7, ZSTD_fast }, /* level 0 - never used */ - { 0, 18, 14, 15, 1, 6, ZSTD_fast }, /* level 1 */ - { 0, 18, 14, 15, 1, 5, ZSTD_fast }, /* level 2 */ - { 0, 18, 12, 15, 3, 4, ZSTD_greedy }, /* level 3 */ - { 0, 18, 13, 15, 4, 4, ZSTD_greedy }, /* level 4 */ - { 0, 18, 14, 15, 5, 4, ZSTD_greedy }, /* level 5 */ - { 0, 18, 13, 15, 4, 4, ZSTD_lazy }, /* level 6 */ - { 0, 18, 14, 16, 5, 4, ZSTD_lazy }, /* level 7 */ - { 0, 18, 15, 16, 6, 4, ZSTD_lazy }, /* level 8 */ - { 0, 18, 15, 15, 7, 4, ZSTD_lazy }, /* level 9 */ - { 0, 18, 16, 16, 7, 4, ZSTD_lazy }, /* level 10 */ - { 0, 18, 16, 16, 8, 4, ZSTD_lazy }, /* level 11 */ - { 0, 18, 17, 16, 8, 4, ZSTD_lazy }, /* level 12 */ - { 0, 18, 17, 16, 9, 4, ZSTD_lazy }, /* level 13 */ - { 0, 18, 18, 16, 9, 4, ZSTD_lazy }, /* level 14 */ - { 0, 18, 17, 17, 9, 4, ZSTD_lazy2 }, /* level 15 */ - { 0, 18, 18, 18, 9, 4, ZSTD_lazy2 }, /* level 16 */ - { 0, 18, 18, 18, 10, 4, ZSTD_lazy2 }, /* level 17 */ - { 0, 18, 18, 18, 11, 4, ZSTD_lazy2 }, /* level 18 */ - { 0, 18, 18, 18, 12, 4, ZSTD_lazy2 }, /* level 19 */ - { 0, 18, 18, 18, 13, 4, ZSTD_lazy2 }, /* level 20 */ -}, -{ /* for srcSize <= 128 KB */ - /* 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, 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 */ - { 0, 17, 16, 17, 4, 4, ZSTD_lazy }, /* level 7 */ - { 0, 17, 16, 17, 4, 4, ZSTD_lazy2 }, /* level 8 */ - { 0, 17, 17, 16, 5, 4, ZSTD_lazy2 }, /* level 9 */ - { 0, 17, 17, 16, 6, 4, ZSTD_lazy2 }, /* level 10 */ - { 0, 17, 17, 16, 7, 4, ZSTD_lazy2 }, /* level 11 */ - { 0, 17, 17, 16, 8, 4, ZSTD_lazy2 }, /* level 12 */ - { 0, 17, 18, 16, 4, 4, ZSTD_btlazy2 }, /* level 13 */ - { 0, 17, 18, 16, 5, 4, ZSTD_btlazy2 }, /* level 14 */ - { 0, 17, 18, 16, 6, 4, ZSTD_btlazy2 }, /* level 15 */ - { 0, 17, 18, 16, 7, 4, ZSTD_btlazy2 }, /* level 16 */ - { 0, 17, 18, 16, 8, 4, ZSTD_btlazy2 }, /* level 17 */ - { 0, 17, 18, 16, 9, 4, ZSTD_btlazy2 }, /* level 18 */ - { 0, 17, 18, 16, 10, 4, ZSTD_btlazy2 }, /* level 19 */ - { 0, 17, 18, 18, 12, 4, ZSTD_btlazy2 }, /* level 20 */ -}, -{ /* for srcSize <= 16 KB */ - /* 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 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 */ - { 0, 14, 14, 13, 6, 5, ZSTD_lazy }, /* level 6 */ - { 0, 14, 14, 14, 7, 6, ZSTD_lazy }, /* level 7 */ - { 0, 14, 14, 14, 8, 4, ZSTD_lazy }, /* level 8 */ - { 0, 14, 14, 15, 9, 4, ZSTD_lazy }, /* level 9 */ - { 0, 14, 14, 15, 10, 4, ZSTD_lazy }, /* level 10 */ - { 0, 14, 15, 15, 6, 4, ZSTD_btlazy2 }, /* level 11 */ - { 0, 14, 15, 15, 7, 4, ZSTD_btlazy2 }, /* level 12 */ - { 0, 14, 15, 15, 8, 4, ZSTD_btlazy2 }, /* level 13 */ - { 0, 14, 15, 15, 9, 4, ZSTD_btlazy2 }, /* level 14 */ - { 0, 14, 15, 15, 10, 4, ZSTD_btlazy2 }, /* level 15 */ - { 0, 14, 15, 15, 11, 4, ZSTD_btlazy2 }, /* level 16 */ - { 0, 14, 15, 15, 12, 4, ZSTD_btlazy2 }, /* level 17 */ - { 0, 14, 15, 15, 13, 4, ZSTD_btlazy2 }, /* level 18 */ - { 0, 14, 15, 15, 14, 4, ZSTD_btlazy2 }, /* level 19 */ - { 0, 14, 15, 15, 15, 4, ZSTD_btlazy2 }, /* level 20 */ -}, -}; /* ************************************* diff --git a/programs/bench.c b/programs/bench.c index efb9d69f4..b7f367d0c 100644 --- a/programs/bench.c +++ b/programs/bench.c @@ -245,13 +245,11 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize, const char* srcPtr = (const char*)srcBuffer; char* cPtr = (char*)compressedBuffer; char* resPtr = (char*)resultBuffer; - for (fileNb=0; fileNb largestBlockSize) largestBlockSize = thisBlockSize; - } - } - } + } } } /* warmimg up memory */ RDG_genBuffer(compressedBuffer, maxCompressedSize, 0.10, 0.50, 1); @@ -279,8 +275,7 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize, U64 crcCheck = 0; DISPLAY("\r%79s\r", ""); - for (loopNb = 1; loopNb <= nbIterations; loopNb++) - { + for (loopNb = 1; loopNb <= nbIterations; loopNb++) { int nbLoops; int milliTime; U32 blockNb; @@ -295,23 +290,12 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize, milliTime = BMK_GetMilliStart(); while (BMK_GetMilliSpan(milliTime) < TIMELOOP) { ZSTD_compressBegin_advanced(refCtx, dictBuffer, dictBufferSize, ZSTD_getParams(cLevel, dictBufferSize+largestBlockSize)); - //ZSTD_compressBegin_advanced(refCtx, dictBuffer, dictBufferSize, ZSTD_getParams(cLevel, 0)); for (blockNb=0; blockNb %6u bytes (%08X) \n", - blockNb, (U32)blockTable[blockNb].srcSize, (U32)blockTable[blockNb].cSize, XXH32(blockTable[blockNb].cPtr, blockTable[blockNb].cSize, 0)); } nbLoops++; } @@ -324,7 +308,7 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize, ratio = (double)srcSize / (double)cSize; DISPLAY("%2i-%-17.17s :%10i ->%10i (%5.3f),%6.1f MB/s\r", loopNb, displayName, (int)srcSize, (int)cSize, ratio, (double)srcSize / fastestC / 1000.); -#if 1 +#if 0 /* Decompression */ memset(resultBuffer, 0xD6, srcSize); /* warm result buffer */ @@ -405,12 +389,10 @@ static size_t BMK_findMaxMem(U64 requiredMem) requiredMem += 2 * step; if (requiredMem > maxMemory) requiredMem = maxMemory; - while (!testmem) - { + while (!testmem) { requiredMem -= step; testmem = (BYTE*)malloc((size_t)requiredMem); } - free(testmem); return (size_t)(requiredMem - step); } @@ -420,8 +402,7 @@ static void BMK_benchCLevel(void* srcBuffer, size_t benchedSize, const size_t* fileSizes, unsigned nbFiles, const void* dictBuffer, size_t dictBufferSize) { - if (cLevel < 0) - { + if (cLevel < 0) { int l; for (l=1; l <= -cLevel; l++) BMK_benchMem(srcBuffer, benchedSize, @@ -453,8 +434,7 @@ static void BMK_loadFiles(void* buffer, size_t bufferSize, size_t pos = 0; unsigned n; - for (n=0; n 64 MB) EXM_THROW(10, "dictionary file %s too large", dictFileName); dictBufferSize = (size_t)dictFileSize;