zstandard -压缩与函数重用上下文



我正试图弄清楚何时使用zstandard函数,该函数如所写,重用上下文。

请解释你在这种情况下的意思:

' ZSTDLIB_API ZSTD_CCtx* ZSTD_createCCtx(void);

ZSTDLIB_API size_t ZSTD_compressCCtx(ZSTD_CCtx* cctx,void* dst, size_t dstCapacity,const void* src, size_t srcSize, int compressionLevel); '

压缩上下文多次压缩,建议只分配一次上下文,并在每次后续压缩操作中重用它。这将使工作负载对系统内存更友好。注意:重用上下文只是一个速度/资源优化。它不会改变压缩比,压缩比保持不变。注2:在多线程环境中,为并行执行每个线程使用一个不同的上下文。

什么意思- "当压缩多次"??

什么东西被压缩了很多次?与数据相同的字符串?还是别的?

ZSTD是一种复杂的压缩算法。它分析输入并创建压缩上下文。在开始压缩任何实际数据之前,你甚至可以提供一个表示要压缩的数据的字典来训练算法(创建上下文)。

当您使用简单API时,每次尝试压缩时都会从输入数据生成上下文。但是,如果您使用更复杂的ZSTD_compressCCtx(),那么获得的上下文将被传递到下一个压缩尝试。这使得压缩器算法不必尝试重新生成压缩上下文,而只需改进已提供的上下文以供进一步使用。

当您要多次压缩类似的数据(例如具有相同或类似结构的文档集合的块)时,这当然是最有益的。事实上,ZSTD_compressStream()ZSTD_compressStream2()函数也将上下文作为第一个参数。它们是创建ZSTD_TransformStreams的非常方便的工具。

最新更新