这里比较了六种数据压缩算法,结果表明Brotli算法会代替普遍使用的Deflate算法。分别用Canterbury compression corpus,web contentcorpus,和 enwik8三种不同的数据集来测试,并比较六种算法在压缩比和压缩速度上的性能。而且,也表明了Zopfli,LZMA,LZHAM,和 bzip2在压缩和解压缩时占用CPU时间较长,不会直接代替deflate。

  Deflate不仅能支持很好的适配现在已有的系统,而且它比较简单快速的编解码。因此,很多无损数据压缩都采用Deflate方法实现的。2013年,谷歌发布Zopfli,改算法不仅兼容Deflate格式,而且支持稠密压缩。现在Zopfli逐渐广泛被接收,有人开始提出目前应该从Deflate算法向更加先进的算法转变。Brotli是谷歌开发的一个新一代的压缩算法。这里将该算法和其他已有的压缩算法进行一个比较。  

CPU

intel@Xeon CPU E5-1650 v2, 3.5G, 6 core

操作系统

Linux 3.13.0

编译器

GCC 4.8.4

单线程

singel

测试文件1

Canterbury compression corpus

测试文件2

A web content, 1285 files and 70611753 bytes

测试文件3

Ebwik8 single file 100M

LZMA和LAHMA算法,窗口越大,压缩速度越慢,压缩比越高。

窗口大小(bit)

版本

Brotli

NA

Brotli version 0.2.0

Deflate

15

Deflate algorithm from zlib 1.2.8

Zopfli

15

Zopfli version from github 20150901

LZMA

22

LZMA implementation in 7zip 9.20.1

LZHAM

22

LZHAM 1.0 stable 1

Bzip2

NA

Bzip2 1.0.0 20100906

测试结果

Canterbury compression corpus

算法:级别

压缩比

压缩速度(MB/s)

解压缩速度(MB/s)

Brotli:1

3.381

98.3

334

Brotli:9

3.965

17

354.5

Brotli:11

4.347

0.5

289.5

Deflate:1

2.913

93.5

323

Deflate:9

3.371

15.5

347.3

Zopfli

3.58

0.2

342.1

Lzma:1

3.847

10.2

70

Lzma:9

4.24

3.9

71.7

Lzham:1

3.836

3.9

116

Lzham:9

3.952

0.5

117.7

Bzip2:1

3.757

11.8

40.4

Bzip2:9

3.869

12

40.2

A web content, 1285 files and 70611753 bytes

算法:级别

压缩比

压缩速度(MB/s)

解压缩速度(MB/s)

Brotli:1

5.217

145.2

508.4

Brotli:9

6.253

30.1

508.7

Brotli:11

6.938

0.6

441.8

Deflate:1

4.666

146.9

434.8

Deflate:9

5.528

32.9

484.1

Zopfli

5.77

0.2

460.1

Lzma:1

5.825

7.9

100.5

Lzma:9

6.231

4.4

102.2

Lzham:1

5.58

4.7

168.7

Lzham:9

5.768

0.2

172.7

Bzip2:1

5.71

11

52.3

Bzip2:9

5.867

11.1

52.3

Ebwik8 single file 100M

算法:级别

压缩比

压缩速度(MB/s)

解压缩速度(MB/s)

Brotli:1

2.711

78.3

228.6

Brotli:9

3.308

5.6

279.4

Brotli:11

3.607

0.4

257.4

Deflate:1

2.364

70.8

211.7

Deflate:9

2.742

18.1

217.4

Zopfli

2.857

0.6

227.7

Lzma:1

3.106

9.8

60.6

Lzma:9

3.696

3.44

71.8

Lzham:1

3.335

2.4

177.9

Lzham:9

3.643

0.4

192.2

Bzip2:1

3.007

12.3

30.8

Bzip2:9

3.447

12.4

30.3

  • 参考文献:

1. https://zopfli.googlecode.com/files/Data_compression_using_Zopfli.pdf
2. https://github.com/google/brotli/releases/tag/v0.2.0
3. http://www.zlib.net/
4. https://github.com/google/zopfli/commit/89cf773beef75d7f4d6d378debdf299378c3314e
5. http://www.7­zip.org/history.txt
6. https://github.com/richgel999/lzham_codec/releases/tag/v1_0_stable1
7. http://www.bzip.org/
8. http://corpus.canterbury.ac.nz/
9. http://prize.hutter1.net/
10.https://cran.r-project.org/web/packages/brotli/vignettes/brotli-2015-09-22.pdf

Brotli、Deflate、Zopfli、LZMA、LZHAM、Bzip2六种无损数据压缩性能比较的更多相关文章

  1. 基于LZO的高性能无损数据解压缩IP

    LZOAccel-D LZO Data Decompression Core/无损数据解压缩IP Core LZOAccel-D是一个无损数据解压缩引擎的FPGA硬件实现,兼容LZO 2.10标准. ...

  2. redis无损数据迁移

    在dba眼中,redis仅仅是一个缓存,不适合作为存储来使用,不管是redis-sentinel集群还是cluster集群,在redis主节点发生意外宕机时没有机制来保证主从节点数据的一致性.但是,很 ...

  3. 在ASP.NET Core中使用brotli压缩

    Brotli是一种全新的数据格式,可以提供比Zopfli高20-26%的压缩比.据谷歌研究,Brotli压缩速度同zlib的Deflate实现大致相同,而在Canterbury语料库上的压缩密度比LZ ...

  4. brotli压缩

    brotli压缩 https://www.cnblogs.com/shanyou/p/9154816.html Brotli是一种全新的数据格式,可以提供比Zopfli高20-26%的压缩比.据谷歌研 ...

  5. 让 CDN 更省流量的 Brotli 算法详解

    早年,我还是学生的时候,时常会鼓捣自己的个人网站,其中最困扰我的问题就是源站服务器易崩溃.作为学生,一方面我没有足够的钱购买高质量的服务器,另一方面一年的流量费用算下来也挺贵的,要花掉我不少的生活费. ...

  6. Web服务器处理HTTP压缩之gzip、deflate压缩

    现如今在处理http请求的时候,由于请求的资源较多,如果不启用压缩的话,那么页面请求的流量将会非常大.启用gzip压缩,在一定程度上会大大的提高页面性能.   目录 一.什么是gzip 二.什么是de ...

  7. 十步叫你如何无损修复硬盘锁(mbr病毒)

    经常看见有人被锁硬盘  开机以后出现一行红字 FUCK  YOU POJIEZHE  等等云云的 这个问题主要还是病毒对Mbr分区的修改造成的 下面我教给大家一个无损数据   无损硬盘  无需重装系统 ...

  8. zstd c++ string 压缩&解压

    zstd 简介 维基百科定义: Zstandard(或Zstd)是由Facebook的Yann Collet开发的一个无损数据压缩算法.该名称也指其C语言的参考实现.第1版的实现于2016年8月31日 ...

  9. 『言善信』Fiddler工具 — 8、Fiddler检查器(Inspectors)详解

    目录 1.请求报文内容 2.响应报文内容 3.响应报文中Transformer选项说明 Inspectors意思是检查器.Inspectors可以使用多种方式,查看请求的请求报文和响应报文相关信息. ...

随机推荐

  1. Android 原生 Intent 分享支持的那些事

    版权声明: 本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有. 每周会统一更新到这里,如果喜欢,可关注公众号获取最新文章. 未经允许,不得转载. 一.前言 对于一个 App ...

  2. vue指令v-model示例解析

    限制 <input> <select> <textarea> components 修饰符 .lazy - 取代 input 监听 change 事件 .numbe ...

  3. NYOJ116 士兵杀敌(二)

    士兵杀敌(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:5   描述 南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的. 小工是南将军手下的军师,南将军经常 ...

  4. Luogu P1451 求细胞数量

    题目描述 一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数.(1<=m,n<=100)? 输入输出格式 输 ...

  5. 在WebGL场景中使用2DA*寻路

      这篇文章将讨论如何在一个自定义的地面网格上进行简单的2D寻路,以及确定路径后如何使用基于物理引擎的运动方式使物体沿路径到达目标地点.读者需要预先对WebGL和Babylonjs知识有一些了解,可以 ...

  6. RabbitMQ教程(一)——安装配置

    RabbitMQ教程(一)——安装配置 一.前言 由于最近在学习RabbitMQ消息队列,但是鉴于网上对于官网介绍的教程比较少或者由于时间长长期未更新,因此决定将对官网的RabbitMQ入门教程进行翻 ...

  7. POJ 2411 Mondriaan's Dream:网格密铺类 状压dp

    题目链接:http://poj.org/problem?id=2411 题意: 给你一个n*m的网格 (1<=n,m<=11) ,往里面铺1*2或2*1的砖块,问你铺完这个网格有多少种不同 ...

  8. 实现QObject与JavaScript通讯(基于QWebEngine + QWebChannel)

    实现QObject与JavaScript通讯(基于QWebEngine + QWebChannel) 通过使用QtWebEngine加载相关页面,然后用QtWebChannel作为Qt与Javascr ...

  9. 第一阶段项目(3body)

    <div class="H1">            <div class="top-nav">                < ...

  10. js基础(一)

    javascript基本介绍(一) (后面我会持续写关于关于js的知识,里面写了很多js的小细节大家可以看下希望对大家有帮助,同时希望大家如果感觉有帮助的话可以帮忙顶一下,谢谢了) Javascrip ...