zlib和缓冲区大小

时间:2012-02-09 09:16:47

标签: zlib buffering

我目前正在尝试在我的一个项目中使用zlib进行压缩。我查看了基本zlib tutorial,我对以下陈述感到困惑:

  

CHUNK只是用于向数据提供数据和提取数据的缓冲区大小   来自zlib例程。更大的缓冲区大小将更有效,   特别是对于inflate()。如果内存可用,则缓冲区大小开启   应该使用128K或256K字节的顺序。

     

#define CHUNK 16384

在我的情况下,我将始终在输出端有一个小缓冲区(大约80个字节),并将通过zlib从输入端连续输入非常小的数据(几个字节)。这意味着我不会在任何一方都有更大的缓冲区,但我打算使用更小的缓冲区。

但是我不确定如何解释“更大的缓冲区大小会更有效”。这是指编码效率还是时间/空间效率?

我必须解决这种情况的一个想法是添加一些缓冲层,这些缓冲层已从输入中累积并反复刷新到输出。然而,这意味着我将不得不累积数据并为我的数据添加更多级别的复制,这也会损害性能。

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

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

1 个答案:

答案 0 :(得分:5)

这意味着时间效率。如果给膨胀大输入和输出缓冲区,它将在内部使用更快的通胀代码。

可以使用尽可能小的缓冲区(即使是1号)也可以正常工作。

您可能有必要累积输入并将其输入以更大的块进行充气。您还需要提供更大的输出缓冲区。