高性能的數據壓縮庫libzling-20140324


  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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM