几款压缩库介绍

 

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 是比较不错的。

你可能感兴趣的:(Server)