From 28228258450a0766697ead632c8cce0c85ed6b88 Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Wed, 7 Sep 2022 23:51:30 -0700 Subject: added LZ4F_compressUpdate() in fullbench --- lib/lz4frame.h | 2 +- tests/fullbench.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/lib/lz4frame.h b/lib/lz4frame.h index 1bdf6c4..8d9380b 100644 --- a/lib/lz4frame.h +++ b/lib/lz4frame.h @@ -278,7 +278,7 @@ LZ4FLIB_API LZ4F_errorCode_t LZ4F_freeCompressionContext(LZ4F_cctx* cctx); /*! LZ4F_compressBegin() : * will write the frame header into dstBuffer. * dstCapacity must be >= LZ4F_HEADER_SIZE_MAX bytes. - * `prefsPtr` is optional : you can provide NULL as argument, all preferences will then be set to default. + * `prefsPtr` is optional : NULL can be provided to set all preferences to default. * @return : number of bytes written into dstBuffer for the header * or an error code (which can be tested using LZ4F_isError()) */ diff --git a/tests/fullbench.c b/tests/fullbench.c index 9c13996..e7a8ea6 100644 --- a/tests/fullbench.c +++ b/tests/fullbench.c @@ -371,6 +371,33 @@ static int local_LZ4F_compressFrame(const char* in, char* out, int inSize) return (int)LZ4F_compressFrame(out, LZ4F_compressFrameBound((size_t)inSize, NULL), in, (size_t)inSize, NULL); } +LZ4F_cctx* g_cctx = NULL; +static int local_LZ4F_compress(const char* in, char* out, int inSize) +{ + /* output buffer size is assumed */ + size_t const outSize = LZ4F_compressFrameBound((size_t)inSize, NULL); + size_t cSize = 0; + assert(inSize >= 0); + if (g_cctx == NULL) { + /* create and initialize LZ4F compression context the first time */ + LZ4F_createCompressionContext(&g_cctx, LZ4F_VERSION); + assert(g_cctx != NULL); + } /* re-use existing compression context otherwise */ + { size_t const cbSize = LZ4F_compressBegin(g_cctx, out, outSize, NULL); + assert(!LZ4F_isError(cbSize)); + cSize += cbSize; + } + { size_t const cuSize = LZ4F_compressUpdate(g_cctx, out+cSize, outSize-cSize, in, (size_t)inSize, NULL); + assert(!LZ4F_isError(cuSize)); + cSize += cuSize; + } + { size_t const ceSize = LZ4F_compressEnd(g_cctx, out+cSize, outSize-cSize, NULL); + assert(!LZ4F_isError(ceSize)); + cSize += ceSize; + } + return (int)cSize; +} + static LZ4F_decompressionContext_t g_dCtx; static int local_LZ4F_decompress(const char* in, char* out, int inSize, int outSize) @@ -586,6 +613,9 @@ int fullSpeedBench(const char** fileNamesTable, int nbFiles) case 30: compressionFunction = local_LZ4F_compressFrame; compressorName = "LZ4F_compressFrame"; chunkP[0].origSize = (int)benchedSize; nbChunks=1; break; + case 31: compressionFunction = local_LZ4F_compress; compressorName = "LZ4F_compressUpdate"; + chunkP[0].origSize = (int)benchedSize; nbChunks=1; + break; case 40: compressionFunction = local_LZ4_saveDict; compressorName = "LZ4_saveDict"; if (chunkP[0].origSize < 8) { DISPLAY(" cannot bench %s with less then 8 bytes \n", compressorName); continue; } LZ4_loadDict(&LZ4_stream, chunkP[0].origBuffer, chunkP[0].origSize); -- cgit v0.12