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。

最新文章

  1. C#进阶系列——WebApi 路由机制剖析:你准备好了吗?
  2. Redis-3.2.6 配置文件中文翻译
  3. c++输入一组整型数据 不知道长度 回车键结束 并将其存入数组当中
  4. qt 环境下mapx组件的鼠标跟踪
  5. EFM32外设模块—USART V1.00
  6. 【leetcode】Integer to Roman & Roman to Integer(easy)
  7. CentOS 7 yum安装Zabbix
  8. 一个mysql开启多个端口
  9. [Hadoop入门] - 1 Ubuntu系统 Hadoop介绍 MapReduce编程思想
  10. centos 7.0防火墙导致vagrant端口映射失败
  11. .Net平台-MVP模式再探(二)
  12. Apriori算法Python实现
  13. ARC使用小结
  14. 201521123071 《JAVA程序设计》第十四周学习总结
  15. 对于python这门课程的一些想法、计划、期望
  16. iOS 如何在自定义类中支持 "[]" 运算符
  17. div凹角实现
  18. css3贝塞尔曲线
  19. ant_任务的含义与使用
  20. less初识

热门文章

  1. (一)JQuery动态加载js的三种方法
  2. MySQL—练习
  3. [label][Google-Developers] Your First Multi Screen Site
  4. linux 用户/用户组添加修改删除(ubuntu/centos)
  5. Flask数据库
  6. solr特点三: 排序样例汇总
  7. java项目 远程debug
  8. wpf(怎么跨线程访问wpf控件)
  9. Devexpress GridControl无限高度惹得祸
  10. JVM垃圾收集器(2)