added benchmark for get1BlockSummary()
This commit is contained in:
@@ -7395,13 +7395,7 @@ size_t ZSTD_convertBlockSequences(ZSTD_CCtx* cctx,
|
|||||||
return ZSTD_convertBlockSequences_internal(cctx, inSeqs, nbSequences, 0);
|
return ZSTD_convertBlockSequences_internal(cctx, inSeqs, nbSequences, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct {
|
BlockSummary ZSTD_get1BlockSummary(const ZSTD_Sequence* seqs, size_t nbSeqs)
|
||||||
size_t nbSequences;
|
|
||||||
size_t blockSize;
|
|
||||||
size_t litSize;
|
|
||||||
} BlockSummary;
|
|
||||||
|
|
||||||
static BlockSummary get1BlockSummary(const ZSTD_Sequence* seqs, size_t nbSeqs)
|
|
||||||
{
|
{
|
||||||
size_t blockSize = 0;
|
size_t blockSize = 0;
|
||||||
size_t litSize = 0;
|
size_t litSize = 0;
|
||||||
@@ -7456,7 +7450,7 @@ ZSTD_compressSequencesAndLiterals_internal(ZSTD_CCtx* cctx,
|
|||||||
|
|
||||||
while (nbSequences) {
|
while (nbSequences) {
|
||||||
size_t compressedSeqsSize, cBlockSize, conversionStatus;
|
size_t compressedSeqsSize, cBlockSize, conversionStatus;
|
||||||
BlockSummary const block = get1BlockSummary(inSeqs, nbSequences);
|
BlockSummary const block = ZSTD_get1BlockSummary(inSeqs, nbSequences);
|
||||||
U32 const lastBlock = (block.nbSequences == nbSequences);
|
U32 const lastBlock = (block.nbSequences == nbSequences);
|
||||||
FORWARD_IF_ERROR(block.nbSequences, "Error while trying to determine nb of sequences for a block");
|
FORWARD_IF_ERROR(block.nbSequences, "Error while trying to determine nb of sequences for a block");
|
||||||
assert(block.nbSequences <= nbSequences);
|
assert(block.nbSequences <= nbSequences);
|
||||||
|
|||||||
@@ -1525,6 +1525,13 @@ size_t ZSTD_convertBlockSequences(ZSTD_CCtx* cctx,
|
|||||||
const ZSTD_Sequence* const inSeqs, size_t nbSequences,
|
const ZSTD_Sequence* const inSeqs, size_t nbSequences,
|
||||||
int const repcodeResolution);
|
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
|
* Private declarations
|
||||||
|
|||||||
@@ -705,6 +705,26 @@ check_compressedSequences(const void* compressed, size_t cSize, const void* orig
|
|||||||
return 0;
|
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)
|
static PrepResult prepCopy(const void* src, size_t srcSize, int cLevel)
|
||||||
{
|
{
|
||||||
PrepResult r = PREPRESULT_INIT;
|
PrepResult r = PREPRESULT_INIT;
|
||||||
@@ -764,6 +784,7 @@ static BenchScenario kScenarios[] = {
|
|||||||
{ "compressSequences", prepSequences, local_compressSequences, check_compressedSequences },
|
{ "compressSequences", prepSequences, local_compressSequences, check_compressedSequences },
|
||||||
{ "compressSequencesAndLiterals", prepSequencesAndLiterals, local_compressSequencesAndLiterals, check_compressedSequences },
|
{ "compressSequencesAndLiterals", prepSequencesAndLiterals, local_compressSequencesAndLiterals, check_compressedSequences },
|
||||||
{ "convertSequences (1st block)", prepConvertSequences, local_convertSequences, NULL },
|
{ "convertSequences (1st block)", prepConvertSequences, local_convertSequences, NULL },
|
||||||
|
{ "get1BlockSummary (1st block)", prepConvertSequences, local_get1BlockSummary, NULL },
|
||||||
#ifndef ZSTD_DLL_IMPORT
|
#ifndef ZSTD_DLL_IMPORT
|
||||||
{ "decodeLiteralsHeader (1st block)", prepLiterals, local_ZSTD_decodeLiteralsHeader, NULL },
|
{ "decodeLiteralsHeader (1st block)", prepLiterals, local_ZSTD_decodeLiteralsHeader, NULL },
|
||||||
{ "decodeLiteralsBlock (1st block)", prepLiterals, local_ZSTD_decodeLiteralsBlock, NULL },
|
{ "decodeLiteralsBlock (1st block)", prepLiterals, local_ZSTD_decodeLiteralsBlock, NULL },
|
||||||
|
|||||||
Reference in New Issue
Block a user