我正试图弄清楚何时使用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_TransformStream
s的非常方便的工具。