幾款壓縮庫介紹
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 是比較不錯的。