我有一个应用程序,它使用外部缓存来处理某些数据(特别是在另一台服务器上使用memcached).在缓存之前,可以选择使用zlib压缩数据.问题是 – 哪种数据大小值得压缩?例如,如果我们有10字节的数据项,那么浪费时间来压缩/解压缩它可能是没用的.但如果我们有10K的数据,那可能是值得的.存储的数据主要是ASCII字符串.
我知道这很大程度上取决于网络速度,CPU速度,数据和什么不是,但有没有任何指导或启发式?不必是完美的,但如果它可以节省一些周期,那就太棒了.
最佳答案 Zlib的deflate具有极小的块头(4位).
http://www.gzip.org/zlib/rfc-deflate.html第3.2.3节
它可以存储未压缩的块或使用固定的huffmann表压缩它,因此即使数据非常短,您的数据也不太可能被扩展很多.
更新:
有一个项目smaz https://github.com/antirez/smaz用于压缩短弦(天真的),作者说,
think that like zlib will usually not be able to compress text shorter than 100 bytes.
为了速度.可能你应该写一个小的基准程序.我可以找到这个研究http://pytables.github.com/usersguide/optimization.html并且有一些有趣的数字:用不同的压缩来写短记录的速度(no,zlib,lzo,bzip2);并阅读简短的记录.
Zlib比写入时未压缩慢5倍,读取速度慢8倍.此外,lzo在此评估中表现更好.