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
}
-/** 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));
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,
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;
+}
+
/* *************************************
* 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,
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,
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() */
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,
***************************************/
#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 */
-},
-};
/* *************************************
const char* srcPtr = (const char*)srcBuffer;
char* cPtr = (char*)compressedBuffer;
char* resPtr = (char*)resultBuffer;
- for (fileNb=0; fileNb<nbFiles; fileNb++)
- {
+ for (fileNb=0; fileNb<nbFiles; fileNb++) {
size_t remaining = fileSizes[fileNb];
U32 nbBlocksforThisFile = (U32)((remaining + (blockSize-1)) / blockSize);
U32 blockEnd = nbBlocks + nbBlocksforThisFile;
- for ( ; nbBlocks<blockEnd; nbBlocks++)
- {
+ for ( ; nbBlocks<blockEnd; nbBlocks++) {
size_t thisBlockSize = MIN(remaining, blockSize);
blockTable[nbBlocks].srcPtr = srcPtr;
blockTable[nbBlocks].cPtr = cPtr;
resPtr += thisBlockSize;
remaining -= thisBlockSize;
if (thisBlockSize > largestBlockSize) largestBlockSize = thisBlockSize;
- }
- }
- }
+ } } }
/* warmimg up memory */
RDG_genBuffer(compressedBuffer, maxCompressedSize, 0.10, 0.50, 1);
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;
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<nbBlocks; blockNb++) {
- ZSTD_copyCCtx(ctx, refCtx);
- size_t rSize = ZSTD_compressContinue(ctx,
- blockTable[blockNb].cPtr, blockTable[blockNb].cRoom,
- blockTable[blockNb].srcPtr,blockTable[blockNb].srcSize);
- if (ZSTD_isError(rSize)) EXM_THROW(1, "ZSTD_compressContinue() failed : %s", ZSTD_getErrorName(rSize));
+ size_t rSize = ZSTD_compress_usingPreparedCCtx(ctx, refCtx,
+ blockTable[blockNb].cPtr, blockTable[blockNb].cRoom,
+ blockTable[blockNb].srcPtr,blockTable[blockNb].srcSize);
+ if (ZSTD_isError(rSize)) EXM_THROW(1, "ZSTD_compress_usingPreparedCCtx() failed : %s", ZSTD_getErrorName(rSize));
blockTable[blockNb].cSize = rSize;
- rSize = ZSTD_compressEnd(ctx,
- blockTable[blockNb].cPtr + rSize,
- blockTable[blockNb].cRoom - rSize);
- if (ZSTD_isError(rSize)) EXM_THROW(2, "ZSTD_compressEnd() failed : %s", ZSTD_getErrorName(rSize));
- blockTable[blockNb].cSize += rSize;
-
- if (blockNb==999999999)
- printf("%4u : %6u => %6u bytes (%08X) \n",
- blockNb, (U32)blockTable[blockNb].srcSize, (U32)blockTable[blockNb].cSize, XXH32(blockTable[blockNb].cPtr, blockTable[blockNb].cSize, 0));
}
nbLoops++;
}
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 */
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);
}
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,
size_t pos = 0;
unsigned n;
- for (n=0; n<nbFiles; n++)
- {
+ for (n=0; n<nbFiles; n++) {
size_t readSize;
U64 fileSize = BMK_getFileSize(fileNamesTable[n]);
FILE* f = fopen(fileNamesTable[n], "rb");
if (!fileSizes) EXM_THROW(12, "not enough memory for fileSizes");
/* Load dictionary */
- if (dictFileName != NULL)
- {
+ if (dictFileName != NULL) {
U64 dictFileSize = BMK_getFileSize(dictFileName);
if (dictFileSize > 64 MB) EXM_THROW(10, "dictionary file %s too large", dictFileName);
dictBufferSize = (size_t)dictFileSize;