From: Yann Collet Date: Wed, 8 Jan 2025 03:29:06 +0000 (-0800) Subject: added benchmark for get1BlockSummary() X-Git-Tag: v1.5.7^2~36^2~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8eb2587432d70359f26ff98fd12db7e8c9be7515;p=thirdparty%2Fzstd.git added benchmark for get1BlockSummary() --- diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index a52980313..d5e3d1c78 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -7395,13 +7395,7 @@ size_t ZSTD_convertBlockSequences(ZSTD_CCtx* cctx, return ZSTD_convertBlockSequences_internal(cctx, inSeqs, nbSequences, 0); } -typedef struct { - size_t nbSequences; - size_t blockSize; - size_t litSize; -} BlockSummary; - -static BlockSummary get1BlockSummary(const ZSTD_Sequence* seqs, size_t nbSeqs) +BlockSummary ZSTD_get1BlockSummary(const ZSTD_Sequence* seqs, size_t nbSeqs) { size_t blockSize = 0; size_t litSize = 0; @@ -7456,7 +7450,7 @@ ZSTD_compressSequencesAndLiterals_internal(ZSTD_CCtx* cctx, while (nbSequences) { size_t compressedSeqsSize, cBlockSize, conversionStatus; - BlockSummary const block = get1BlockSummary(inSeqs, nbSequences); + BlockSummary const block = ZSTD_get1BlockSummary(inSeqs, nbSequences); U32 const lastBlock = (block.nbSequences == nbSequences); FORWARD_IF_ERROR(block.nbSequences, "Error while trying to determine nb of sequences for a block"); assert(block.nbSequences <= nbSequences); diff --git a/lib/compress/zstd_compress_internal.h b/lib/compress/zstd_compress_internal.h index 2be67a124..ca5e2a4c5 100644 --- a/lib/compress/zstd_compress_internal.h +++ b/lib/compress/zstd_compress_internal.h @@ -1525,6 +1525,13 @@ size_t ZSTD_convertBlockSequences(ZSTD_CCtx* cctx, const ZSTD_Sequence* const inSeqs, size_t nbSequences, int const repcodeResolution); +typedef struct { + size_t nbSequences; + size_t blockSize; + size_t litSize; +} BlockSummary; + +BlockSummary ZSTD_get1BlockSummary(const ZSTD_Sequence* seqs, size_t nbSeqs); /* ============================================================== * Private declarations diff --git a/tests/fullbench.c b/tests/fullbench.c index 3cc5c2341..7d77bd176 100644 --- a/tests/fullbench.c +++ b/tests/fullbench.c @@ -705,6 +705,26 @@ check_compressedSequences(const void* compressed, size_t cSize, const void* orig return 0; } +static size_t +local_get1BlockSummary(const void* input, size_t inputSize, + void* dst, size_t dstCapacity, + void* payload) +{ + const char* ip = input; + size_t const blockSize = MEM_read32(ip); + size_t const nbSeqs = MEM_read32(ip+=4); + const ZSTD_Sequence* seqs = (const ZSTD_Sequence*)(const void*)(ip+=4); + ZSTD_CCtx_reset(g_zcc, ZSTD_reset_session_and_parameters); + ZSTD_resetSeqStore(&g_zcc->seqStore); + ZSTD_CCtx_setParameter(g_zcc, ZSTD_c_blockDelimiters, ZSTD_sf_explicitBlockDelimiters); + assert(8 + nbSeqs * sizeof(ZSTD_Sequence) == inputSize); (void)inputSize; + (void)dst; (void)dstCapacity; + (void)payload; (void)blockSize; + + (void)ZSTD_get1BlockSummary(seqs, nbSeqs); + return nbSeqs; +} + static PrepResult prepCopy(const void* src, size_t srcSize, int cLevel) { PrepResult r = PREPRESULT_INIT; @@ -764,6 +784,7 @@ static BenchScenario kScenarios[] = { { "compressSequences", prepSequences, local_compressSequences, check_compressedSequences }, { "compressSequencesAndLiterals", prepSequencesAndLiterals, local_compressSequencesAndLiterals, check_compressedSequences }, { "convertSequences (1st block)", prepConvertSequences, local_convertSequences, NULL }, + { "get1BlockSummary (1st block)", prepConvertSequences, local_get1BlockSummary, NULL }, #ifndef ZSTD_DLL_IMPORT { "decodeLiteralsHeader (1st block)", prepLiterals, local_ZSTD_decodeLiteralsHeader, NULL }, { "decodeLiteralsBlock (1st block)", prepLiterals, local_ZSTD_decodeLiteralsBlock, NULL },