zlib压缩的最小数据大小?

时间:2011-04-20 22:04:25

标签: compression memcached zlib

我有一个应用程序,它使用外部缓存来处理某些数据(特别是在另一台服务器上使用memcached)。在缓存之前,可以选择使用zlib压缩数据。问题是 - 哪种数据大小值得压缩?例如,如果我们有10字节的数据项,那么浪费时间来压缩/解压缩它可能是没用的。但如果我们有10K的数据,那可能是值得的。存储的数据主要是ASCII字符串。

我知道这在很大程度上取决于网络速度,CPU速度,数据和什么不是,但有没有任何指导或启发式?不必是完美的,但如果它可以节省一些周期,那就太棒了。

1 个答案:

答案 0 :(得分:2)

Zlib的deflate具有极小的块头(4位)。 http://www.gzip.org/zlib/rfc-deflate.html第3.2.3节

它可以存储未压缩的块或使用固定的huffmann表对其进行压缩,因此即使数据非常短,也不太可能扩展数据。

更新:

有一个项目smaz https://github.com/antirez/smaz用于压缩短字符串(天真的字符串),作者说,

  

认为像zlib一样,通常无法压缩短于100个字节的文本。

速度快。可能你应该写一个小的基准程序。我可以找到这个研究http://pytables.github.com/usersguide/optimization.html并且有一些有趣的数字:用不同的压缩来写短记录的速度(no,zlib,lzo,bzip2);并阅读简短的记录。

Zlib比写入时未压缩慢5倍,读取速度慢8倍。此外,lzo在此评估中表现更好。