Brotli、Deflate、Zopfli、LZMA、LZHAM、Bzip2六种无损数据压缩性能比较
这里比较了六种数据压缩算法,结果表明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.7zip.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六种无损数据压缩性能比较的更多相关文章
- 基于LZO的高性能无损数据解压缩IP
LZOAccel-D LZO Data Decompression Core/无损数据解压缩IP Core LZOAccel-D是一个无损数据解压缩引擎的FPGA硬件实现,兼容LZO 2.10标准. ...
- redis无损数据迁移
在dba眼中,redis仅仅是一个缓存,不适合作为存储来使用,不管是redis-sentinel集群还是cluster集群,在redis主节点发生意外宕机时没有机制来保证主从节点数据的一致性.但是,很 ...
- 在ASP.NET Core中使用brotli压缩
Brotli是一种全新的数据格式,可以提供比Zopfli高20-26%的压缩比.据谷歌研究,Brotli压缩速度同zlib的Deflate实现大致相同,而在Canterbury语料库上的压缩密度比LZ ...
- brotli压缩
brotli压缩 https://www.cnblogs.com/shanyou/p/9154816.html Brotli是一种全新的数据格式,可以提供比Zopfli高20-26%的压缩比.据谷歌研 ...
- 让 CDN 更省流量的 Brotli 算法详解
早年,我还是学生的时候,时常会鼓捣自己的个人网站,其中最困扰我的问题就是源站服务器易崩溃.作为学生,一方面我没有足够的钱购买高质量的服务器,另一方面一年的流量费用算下来也挺贵的,要花掉我不少的生活费. ...
- Web服务器处理HTTP压缩之gzip、deflate压缩
现如今在处理http请求的时候,由于请求的资源较多,如果不启用压缩的话,那么页面请求的流量将会非常大.启用gzip压缩,在一定程度上会大大的提高页面性能. 目录 一.什么是gzip 二.什么是de ...
- 十步叫你如何无损修复硬盘锁(mbr病毒)
经常看见有人被锁硬盘 开机以后出现一行红字 FUCK YOU POJIEZHE 等等云云的 这个问题主要还是病毒对Mbr分区的修改造成的 下面我教给大家一个无损数据 无损硬盘 无需重装系统 ...
- zstd c++ string 压缩&解压
zstd 简介 维基百科定义: Zstandard(或Zstd)是由Facebook的Yann Collet开发的一个无损数据压缩算法.该名称也指其C语言的参考实现.第1版的实现于2016年8月31日 ...
- 『言善信』Fiddler工具 — 8、Fiddler检查器(Inspectors)详解
目录 1.请求报文内容 2.响应报文内容 3.响应报文中Transformer选项说明 Inspectors意思是检查器.Inspectors可以使用多种方式,查看请求的请求报文和响应报文相关信息. ...
随机推荐
- Python爬虫从入门到放弃(二十二)之 爬虫与反爬虫大战
爬虫与发爬虫的厮杀,一方为了拿到数据,一方为了防止爬虫拿到数据,谁是最后的赢家? 重新理解爬虫中的一些概念 爬虫:自动获取网站数据的程序反爬虫:使用技术手段防止爬虫程序爬取数据误伤:反爬虫技术将普通用 ...
- [BZOJ 3629][ JLOI2014 ]聪明的燕姿
这道题考试选择打表,完美爆零.. 算数基本定理: 任何一个大于1的自然数N,都可以唯一分解成有限个质数的乘积N=P₁^a₁ P₂^a₂…Pn^an,这里P₁<P₂<…<Pn均为质数, ...
- Alpha版与Beta版
简单说说这两个词的意思,以后会稍加更多的补充. Alpha版意在对少数主要客户和市场进行数量有限的分发,用于演示目的的早期构造.其无意在实际环境中使用.使用Alpha版的所有人员必须了解确切内容和质量 ...
- 诡异错误二:TypeError: data type not understood
如何使用Python产生一个数组,数组的长度为1024,数组的元素全为0? 很简单啊, 使用zeros(1024) 即可实现! 如何产生一个2×1024的全0矩阵呢?是否是zeros(2,1024) ...
- SGI STL 内存分配方式及malloc底层实现分析
在STL中考虑到小型区块所可能造成的内存碎片问题,SGI STL设计了双层级配置器,第一级配置器直接使用malloc()和free();第二级配置器则视情况采用不同的策略:当配置区块超过128byte ...
- 学习设计模式之MVC、MVP、MVVM
引言:认真学习了下广义MVC模式下前端怎么写,狭义的MVC其实是有一个变化过程:MVC MVP MVVM,网上看了很多的关于这方面的介绍,以前总是将视图数据逻辑写一个模块,最近尝试分开并用组件式的开发 ...
- Linux中mysql乱码问题
注意: 关于utf8和gbk的区别详细见:linux中文乱码问题解决办法 http://www.linuxidc.com/Linux/2010-04/25757.htm ,下面的配置中根据自己要求选择 ...
- github+hexo搭建自己的博客网站(三)主题之外的一些基本配置(图片位置,文章目录功能)
使用的yilia主题之后,还需要进行自己的定制配置 1.图片的位置 比如打赏的支付宝二维码图片,是在当前博客的source/assets/img/下 (不是当前主题) 配置:(在yilia主题下文件里 ...
- 【Ubuntu 16】 wifi连接 并解决无桌面图标问题
笔记本上装了win10和ubuntu16双系统,ubuntu16有半年多没使用了,今天一登录成功后,没有桌面啦,一个干净的壁纸映入眼帘,真操蛋. 上网搜索后总结:应该是应用软件中心出了问题,可是,没法 ...
- CSS float 属性
Float定义: float 属性定义元素在哪个方向浮动.以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动. 浮动元素会生成一个块级框,而不论它本身是何种元素.如 ...