压缩算法和压缩库

LZ4

LZ4能很好的支持多线程环境,获得更高的压缩和解压速度。

 

QuickLZ

QuickLZ官网:http://www.quicklz.com/

QuickLZ is the world's fastest compression library, reaching 308MB/s per core.

QuickLZ自称是世界上最快的压缩算法,然而我们看到它和LZ4还是有差距的,特别是解压速度。

 

snappy

snappy项目:https://code.google.com/p/snappy/

snappy is developed by Google based on ideas from LZ77 and open-sourced in 2011.

It was designed to be very fast and stable, but not to achieve a high compression ratio.

Compression speed is 250MB/s and decompression speed is 500MB/s using a single threaded,

64-bit core i7 processor. The compression ratio is 20-100% lower than gzip.

snappy追求的是速度,压缩比并不高。

 

 

zip

    zlib库,可通过包含zlib.h使用。

    zip原名为Deflate,仅支持一个LZ77的变种算法Deflate。

    zip/unzip,后缀为.zip。zip也是Windows下常见的压缩格式。

 gzip

    gzip/gunzip是GNU程序,后缀为.gz。Web也常用GZIP压缩技术。

    首先使用LZ77算法进行压缩,对结果再使用huffman编码进行压缩。

    tar中用-z来调用:

         tar -czf pic.tar.gz *.jpg

         tar -xzf pic.tar.gz

bzip2

    bzip2/bunzip2,后缀为.bz2。

    相比于gzip,压缩比更高,压缩效果比传统的LZ77/LZ78更好,但压缩速度较慢。

    首先使用Burrows-Wheeler变换(BWT,块排序文本压缩),然后使用哈夫曼编码进行压缩。

    tar中使用-j来调用:

        tar -cjf pic.tar.bz2 *.jpg

        tar -xjf pic.tar.bz2

compress

    compress/uncompress,后缀为.Z,现在已经不再流行了。

    使用LZ78算法的变种LZW。

    tar中使用-Z来调用。

rar

    rar/unrar,后缀为.rar。

    rar格式较zip格式的压缩比高。

    注意RAR非免费,是Windows下常见压缩格式,也有RAR for Linux。

        rar a pic *.jpg // pic.rar

        rar e pic.rar // pic

7z

    7-Zip,后缀为.7z。

    和rar、zip一样,7z也是Windows下常见的压缩格式。

    使用改良与优化后的LZ77算法LZMA、LZMA2,压缩比高于zip。

xz

    xz,后缀为.xz。

    如果说LZ4是压缩速度之王,xz则是压缩比之王。

    一般来说,用xz压缩后的文件,能比用gzip压缩的小30%,比用bzip2压缩的小15%。

    主要使用LZMA2压缩算法。

    tar不支持xz格式,xz / xz -d。

 

测试

Quick comparison: single thread, Core i5-3340M @2.7GHz, using the Open-Source Benchmark by m^2 (v0.14.2)

compiled with GCC v4.6.1 on Linux Ubuntu 64-bits v11.10, using the Silesia Corpus.

对比当前流行的压缩工具,可以看到LZ4具有最快的压缩和解压速度,尽管压缩比一般。

 

 

总结

1.snappy 从各个方面是相对均衡的压缩算法,使用场景比较多

2.lz4 是了解到各方面都比较优越的算法,

3.当然还有其他的 lzo,gz,zlib 等等,相比上面两种来说要差一些,当然特殊场景下可以择优选取,但是通用场景选 snappy 或者 lz4 是比较不错的。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值