libzling(https://github.com/richox/libzling,求觀看[watch],求星[star],求叉[fork])是一款高性能的數據壓縮庫,在壓縮時間和壓縮率上都超過了流行的zlib/gzip。libzling使用的是ROLZ字典算法和Polar編碼,這兩個算法的說明可以參考這兩篇文章:
http://www.cnblogs.com/richselian/archive/2012/11/10/2764427.html
http://www.cnblogs.com/richselian/archive/2012/11/09/2763162.html
上次發布之后,陸續收到了很多朋友的反饋,深感到作為一個壓縮庫,除了性能保證之外,還應提供一個壓縮參數,讓用戶可以自由選擇高速/高壓縮比的方式。所以本次更新加上了5級壓縮參數:
- 0級:對每個位置做2次匹配。
- 1級:對每個位置做4次匹配。
- 2級:對每個位置做6次匹配 + 1次懶惰匹配(偏移量+1)。
- 3級:對每個位置做8次匹配 + 2次懶惰匹配(偏移量+1) + 1次懶惰匹配(偏移量+2)。
- 4級:對每個位置做32次匹配 + 8次懶惰匹配(偏移量+1) + 4次懶惰匹配(偏移量+2)。
這5種壓縮模式的不同點僅僅在於ROLZ壓縮算法尋找匹配的階段,它們可以共用同一個解壓算法。在對wikipedia數據(enwik8)的測評中,0級模式達到了速度超gzip約3.5倍,壓縮率超gzip約10%的成績。其它幾個模式的速度也都超過了gzip,同時達到了更高的壓縮率(4級的壓縮率超gzip約20%)。
本次更新后的接口和原接口是兼容的,原算法對應新版本的level=3模式,壓縮的接口多了一個可選的level參數:
int Encode(Inputter* inputter, Outputter* outputter, ActionHandler* action_handler = NULL, int level = 0); int Decode(Inputter* inputter, Outputter* outputter, ActionHandler* action_handler = NULL);
歡迎大家下載/試用/吐槽/提BUG。