高性能的数据压缩库libzling-20140324
2024-08-25 18:47:49
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 = );
int Decode(Inputter* inputter, Outputter* outputter, ActionHandler* action_handler = NULL);
欢迎大家下载/试用/吐槽/提BUG。
最新文章
- C#进阶系列——WebApi 路由机制剖析:你准备好了吗?
- Redis-3.2.6 配置文件中文翻译
- c++输入一组整型数据 不知道长度 回车键结束 并将其存入数组当中
- qt 环境下mapx组件的鼠标跟踪
- EFM32外设模块—USART V1.00
- 【leetcode】Integer to Roman &; Roman to Integer(easy)
- CentOS 7 yum安装Zabbix
- 一个mysql开启多个端口
- [Hadoop入门] - 1 Ubuntu系统 Hadoop介绍 MapReduce编程思想
- centos 7.0防火墙导致vagrant端口映射失败
- .Net平台-MVP模式再探(二)
- Apriori算法Python实现
- ARC使用小结
- 201521123071 《JAVA程序设计》第十四周学习总结
- 对于python这门课程的一些想法、计划、期望
- iOS 如何在自定义类中支持 ";[]"; 运算符
- div凹角实现
- css3贝塞尔曲线
- ant_任务的含义与使用
- less初识