libzling(https://github.com/richox/libzling)是一款高性能的數據壓縮庫,在壓縮時間和壓縮率上都超過了流行的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。html
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 }