2013年10月8日 星期二

LZMA、LZF、GZip壓縮方法比較心得

最近因為工作需求研究了幾種檔案壓縮的演算法,

實測之後,認為其中最具代表性的有三種:LZMA、LZF、GZip

那這三種壓縮方法各有甚麼特色呢?


1. LZMA:這個演算法就是平常使用的7z壓縮工具內建的壓縮法

特點:優秀的壓縮率,但壓縮時間很長,往往是其他演算法的數倍之久!


2. LZF:強調演算法執行的效率,減少憶體用使量,加快壓縮/解壓縮的時間

特點:壓縮時間很快!解壓縮時間更快!但壓縮率表現不佳


3. GZip:GNU組織推出的壓縮法,推出時間已有20年,廣泛被使用

特點:壓縮率和壓縮時間表現都適中,解壓縮比壓縮慢


做成個人不負責任比較表的話就是長成這樣:

LZMALZFGZip
壓縮比上上中下
壓縮時間下下
解壓縮時間下下上上中下

所以以結論來說不同的壓縮法適用於不同的使用情境,

若需要即時性的操作,如傳檔案時的壓縮,使用壓縮時間短的方法較適當,

若是單純用來減少檔案存放時占用的硬體容量,則適合像LZMA這種強化壓縮比的演算法,

各有所長,小小心得與大家分享。


[相關資源]

1. LZMA:
http://www.developershome.com/7-zip/sdk.asp
2. LZF:
https://github.com/ning/compress
3. GZip:
http://docs.oracle.com/javase/7/docs/api/java/util/zip/GZIPInputStream.html
http://docs.oracle.com/javase/7/docs/api/java/util/zip/GZIPOutputStream.html

1 則留言: