zlib和缓冲区大小

LiK*_*Kao 1 zlib buffering

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

CHUNK只是用于向zlib例程提供数据和从中提取数据的缓冲区大小.较大的缓冲区大小会更有效,尤其是对于inflate().如果内存可用,则应使用大约128K或256K字节的缓冲区大小.

#define CHUNK 16384

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

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

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

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

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

Mar*_*ler 5

这意味着时间效率.如果给膨胀大输入和输出缓冲区,它将在内部使用更快的通胀代码.它可以很好地使用你喜欢的缓冲区(甚至是1号),但速度会慢一些.

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