compression - zlib 压缩的最小数据大小?

标签 compression memcached zlib

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

我知道这在很大程度上取决于网络速度、CPU 速度、数据等等,但是否有任何指导方针或启发式方法?不一定是完美的,但如果它可以节省一些周期,那就太好了。

最佳答案

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

它可以存储未压缩的块或使用固定的霍夫曼表对其进行压缩,因此即使您的数据很短,也不太可能大量扩展。

更新:

有项目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 在此评估中表现更好。

关于compression - zlib 压缩的最小数据大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5737189/

相关文章:

algorithm - 在给定范围内找到最可压缩的向量?

python - 使用 Python 解压缩数据包的 gzip 有效负载

php - 如何删除 memcached 中具有相同前缀键的项目?

asp.net - Enyim memcached 提供程序 CPU 峰值

ruby-on-rails - 由于缺少扩展名 : openssl, readline、zlib 编译错误,Ruby 安装中止

Git DEFLATE/优化的 zlib

c# - 压缩小字符串,用什么创建外部字典?

c# - 小文件的更好选择,发送或压缩并发送?

python - pylibmc : undefined symbol: memcached_server_list

c - 我如何使用 Minizip(在 Zlib 上)?