高性能的數據壓縮庫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.htmlhtml

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

 

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

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便可。ui

 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 }
相關文章
相關標籤/搜索