高性能的數據壓縮庫libzling


  libzling(https://github.com/richox/libzling)是一款高性能的數據壓縮庫,在壓縮時間和壓縮率上都超過了流行的zlib/gzip。libzling使用的是ROLZ字典算法和Polar編碼,這兩個算法的說明可以參考這兩篇文章:http://www.cnblogs.com/richselian/archive/2012/11/10/2764427.htmlhttp://www.cnblogs.com/richselian/archive/2012/11/09/2763162.html

  libzling使用的是1階ROLZ字典編碼和0階Polar編碼,在權威的 Large Text Compression Benchmark 測評上,壓縮時間、解壓時間和壓縮率都分別超過gzip約50%、20%、10%左右。libzling最適用於一般的文本數據,對大量冗余的文本日志數據性能更佳,壓縮率可以壓縮gzip的30%以上。

 

  使用libzling的方式很簡單,首先從github上clone最新的版本:

git clone https://github.com/richox/libzling

  然后cd到build目錄下,使用cmake編譯(cmake的具體安裝方法可以Google):

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local
make
make install

 

  以下是最簡單的使用libzling的方式,具體的接口文檔現在還沒有完成,可以參考源代碼中的demo程序:./sample/zling.cpp

  代碼可以使用g++編譯,編譯選項加上-lzling即可。

 1 #include "libzling.h"
 2 
 3 int main() {
 4     // compress
 5     {
 6         FILE* fin = fopen("./1.txt", "rb");
 7         FILE* fout = fopen("./1.txt.zlng", "wb");
 8 
 9         baidu::zling::FileInputer  inputer(fin);
10         baidu::zling::FileOutputer outputer(fout);
11 
12         baidu::zling::Encode(&inputer, &outputer);
13         fclose(fin);
14         fclose(fout);
15     }
16 
17     // decompress
18     {
19         FILE* fin = fopen("./1.txt.zlng", "rb");
20         FILE* fout = fopen("./2.txt", "wb");
21 
22         baidu::zling::FileInputer  inputer(fin);
23         baidu::zling::FileOutputer outputer(fout);
24 
25         baidu::zling::Decode(&inputer, &outputer);
26         fclose(fin);
27         fclose(fout);
28     }
29     return 0;
30 }

 


免責聲明!

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



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