zlib和缓冲区大小



我目前正试图在我的一个项目中使用zlib进行压缩。我看了一眼基本的zlib教程,对以下语句感到困惑:

CHUNK只是用于向数据馈送数据和提取数据的缓冲区大小来自zlib例程。较大的缓冲器大小将更有效,尤其是充气()。如果内存可用,则缓冲区大小为应该使用128K或256K字节的顺序。

#定义CHUNK 16384

在我的情况下,我总是在输出端有一个可用的小缓冲区(大约80字节),并将通过zlib从输入端不断提供非常小的数据(几个字节)。这意味着我不会在任何一边都有更大的缓冲区,但我计划使用更小的缓冲区。

然而,我不知道如何解释"更大的缓冲区大小将更有效"。这是指编码效率还是时间/空间效率?

我必须纠正这种情况的一个想法是添加更多的缓冲层,这些缓冲层已经从输入累积并重复刷新到输出。然而,这意味着我必须积累数据,并在数据中添加更多级别的复制,这也会影响性能。

现在,如果效率只是指时间/空间效率,我可以测量这两种方法的影响,并决定使用哪种方法。然而,如果实际的编码可能会受到较小缓冲区大小的影响,这可能真的很难检测到。

有人有使用zlib和非常小的缓冲区的经验吗?

表示时间效率。如果你给膨胀较大的输入和输出缓冲区,它将在内部使用更快的膨胀代码。它可以很好地使用您喜欢的小缓冲区(甚至大小为1),但速度会较慢。

对你来说,积累输入并将其输入到更大的块中可能是值得的。您还需要提供更大的输出缓冲区。

最新更新