zlib和缓冲区大小

zlib和缓冲区大小

问题描述:

我目前正在尝试在我的一个项目中使用zlib进行压缩。我看了一下基本zlib tutorial,我用下面的语句困惑:zlib和缓冲区大小

块是仅仅为了把数据输入和拉动从zlib的程序数据 缓冲区的大小。较大的缓冲区大小会更有效率,特别是对于inflate()而言更是如此。如果内存可用,则应使用128K或256K字节的顺序在 上的缓冲区大小。

的#define CHUNK 16384

在我来说,我将永远有一个小的缓冲区已经可以在输出端(约80个字节),并会不断输入馈非常小的数据(几个字节)通过zlib。这意味着我在任何一方都不会拥有更大的缓冲区,但我打算使用更小的缓冲区。

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

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

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

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

这意味着时间效率。如果您给大量输入和输出缓冲区充气,它将在内部使用更快的通货膨胀代码。只要你喜欢的缓冲区(甚至大小1),它会工作得很好,但它会更慢。

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