几个常用快速无损压缩算法性能比较(转载)
几个常用快速无损压缩算法性能比较
(2013-08-19 21:16:29)
标签: 快速无损压缩算法
实时压缩算法
it
分类: 软件工程
几个常用快速无损压缩算法性能比较
Snappy
Snappy是在谷歌内部生产环境中被许多项目使用的压缩库,包括BigTable,MapReduce和RPC等。谷歌表示算法库针对性能做了调整,而不是针对压缩比或与其他类似工具的兼容性。在Intel酷睿i7处理器上,其单核处理数据流的能力达到250M/s-500M/s。Snappy同时针对64位x86处理器进行了优化,在英特尔酷睿i7处理器单一核心实现了至少250MB/s的压缩性能和500MB/ s的解压缩性能。Snappy对于纯文本的压缩率为1.5-1.7,对于HTML是2-4,当然了对于JPEG、PNG和其他已经压缩过的数据压缩率为1.0。谷歌强劲吹捧Snappy的鲁棒性,称其是“即使面对损坏或恶意输入也不会崩溃的设计”,并且在谷歌的生产环境中经过了PB级数据压缩的考验而稳定的。
官方网站:http://code.google.com/p/snappy/
FastLZ
FastLZ是一个高效的轻量级压缩解压库,其官方测试数据如下表:
1GB文本数据测试:
官方网站:http://www.quicklz.com/
LZO/miniLZO
LZO是一个开源的无损压缩C语言库,其优点是压缩和解压缩比较迅速占用内存小等特点(网络传输希望的是压缩和解压缩速度比较快,压缩率不用很高),其提供了比较全的LZO库和一个精简版的miniLZO库,网上测试数据如下:
测试的时候使用bmp和文本文件,在X86的Linux虚拟机(单核256M内存,Debian 6.0 OS)上测试。
测试文件
原始大小
压缩后大小
压缩率
压缩时间
解压时间
1.bmp
5292054
159395
3.01%
9.174ms
23.037ms
2.bmp
6912056
33806
0.489%
8.33ms
36.17ms
3.bmp
6220856
5101891
82%
25.78ms
28.43ms
lzo.tar
6645760
2457890
36.98%
34.68ms
38.62ms
kdoc.tar
16660480
6987402
41.93%
102.86ms
108.2ms
kinc.tar
18257920
5684927
31.13%
106.87ms
113.86ms
官方网站:http://www.oberhumer.com/opensource/lzo/
来自《HBase: The Definitive Guide》中的一个对比:
Algorithm
% remaining
Encoding
Decoding
GZIP
13.4%
21 MB/s
118 MB/s
LZO
20.5%
135 MB/s
410 MB/s
Zippy/Snappy
22.2%
172 MB/s
409 MB/s