《老子到此一游系列》之 老子为什么是老子 ——综述视角解读压缩编码 第三章 Brotli介绍(转发)
ELT.ZIP是谁?
ELT<=>Elite(精英),.ZIP为压缩格式,ELT.ZIP即压缩精英。
成员:
上海工程技术大学大二在校生 闫旭
合肥师范学院大二在校生 楚一凡
清华大学大二在校生 赵宏博
成都信息工程大学大一在校生 高云帆
黑龙江大学大一在校生 高鸿萱
山东大学大三在校生 张智腾
ELT.ZIP是来自6个地方的同学,在OpenHarmony成长计划啃论文俱乐部里,与来自华为、软通动力、润和软件、拓维信息、深开鸿等公司的高手一起,学习、研究、切磋操作系统技术…
本文的梳理来自其中的四名同学:闫旭、楚一凡、赵宏博和高云帆。
前期回顾
第一章:轻松上手——《伟大的计算原理》和《数据压缩技术调查:从数据质量、编码方案、数据类型和应用的角度》
第二章:小波变换(Wavelet Transform)——嵌入式零树小波编码EZW、无损加密后压缩(ETC)技术
第三章 Brotli 介绍
3.1 引言
现代的网页通常包含了由大量的HTML, CSS和JavaScript代码编写的图片、视频或其他大型文件数据,导致了网页打开的速度很慢。如果能有一种好的压缩算法将这些内容和数据进行压缩后传输,那么用户只需要等待很短时间就可以完全加载整个页面上的内容。
Brotli 是 Google 在 2013 年底推出的一款开源通用数据压缩器,并在 Github 开源,现在已经被大多数知名浏览器和 Web 服务器采用。Brotli 的设计的主要目标是压缩 Internet 上的数据,这意味着它可以优化解码时使用的资源,同时实现最大的压缩密度。
3.2 Brotli 概述
Brotli 的编码器库提供了 12 个质量级别(从 0 到 11)。它们是⽤压缩速度换取压缩效率的压缩模式:更⾼质量的级别速度较慢,但会产⽣更好的压缩⽐。
一个 Brotli 压缩⽂件由 元块(meta-blocks) 集合组成。每个元块最多可容纳 16MiB,由两部分组成:一个 数据部分(data Part),它存储 LZ77 压缩的放⼊块,以及一个 标题(header),每个块的压缩由以下两个主要阶段组成:
- 经典的LZ77 算法和Huffman编码组合方案进行压缩;
- 由计算具有良好的熵的 LZ77 解析和计算 LZ 短语的简洁编码。
3.2 Brotli 的优势
为了验证Brotli 的优势。进行了如下的实验测试。测试计算机搭载 Intel® Xeon® CPU E51650 v2,运行频率为 3.5 GHz,具有六个内核和六个额外的超线程上下⽂。运行 linux 3.13.0。所有编解码器均使⽤相同的编译器 GCC 4.8.4 在 O2 级别优化进行编译。
测试针对三种不同情况的对比,探寻Brotli和其他压缩算法的不同。
- 情况1:压缩Canterbury语料库的11个文件
此表显示了 Canterbury语料库上压缩算法的结果。Canterbury 语料库包含 11 个文件,我们显示了测量属性的几何平均值:压缩比、压缩速度和解压缩速度。
- 情况2:压缩包含 93种不同语言的 1285个HTML文档
压缩算法对从 Internet 爬网的文档样本的结果。该示例包含 1285 个 HTML 文档,其中包含 93 种不同的语言。
- 情况3:压缩 enwik8文件
enwik8 文件上不同压缩算法的结果。
测试结果:质量级别(quality setting)为1的 Brotli的压缩速度和解压缩速度与与质量级别为1的Deflate相同,但Brotli的压缩比Deflate提高了 12% ~ 16%。质量级别为9的 Brotli 与 质量级别为9的Deflate也大致相同,但Enwik8的解码速度提高了28%,压缩比提高了 13% ~ 21%。质量级别为11的 Brotli压缩速度明显快于 Zopfli,压缩比高出 20% ~ 26%。
参考文献
[1] Brotli: A General-Purpose Data Compressor
https://xueshu.baidu.com/usercenter/paper/show?paperid=1w6v0jh0qj360210sn0p08f0br369452&site=xueshu_se&hitarticle=1
[2] Comparison of Brotli, Deflate, Zopfli, LZMA, LZHAM and Bzip2 Compression Algorithms
https://xueshu.baidu.com/usercenter/paper/show?paperid=f2897fe8c697d8ccbbf57bf5a0eb1a99&site=xueshu_se&hitarticle=1
[3] Brotli 无损压缩算法
https://www.oschina.net/p/brotli
缩略语列表
缩写 | 英文 | 中文 |
AC | Alternating Current | 交流 |
ASWDR | Adaptively Scanned Wavelet Difference Reduction | 自适应扫描小波差约简 |
ATM | Asynchronous Transfer Mode | 异步传输模式 |
CR | Compression Ratio | 压缩比 |
CREW | Compression with Reversible Embedded Wavelets | 可逆嵌入小波压缩 |
CSS | Cascading Style Sheets | 层叠样式表 |
DC | Data Compression | 数据压缩 |
DCT | Discrete Cosine Transform | 离散余弦变换 |
DWT | Discrete Wavelet Transform | 离散小波变换 |
EBCOT | Embedded Block Coding with Optimised Truncation | 优化截断的嵌入式块 |
EC | Embedded Coding | 嵌入式编码 |
EPWIC | Embedded Predictive Wavelet Image Coder | 嵌入式预测小波图像 |
ETC | Encryption Then Compression | 加密后压缩 |
EZW | Embedded Zerotree Wavelets | 嵌入式零树小波 |
GW | Geometric Wavelet | 几何小波 |
HVS | Human Visual System | 人类视觉系统 |
JPEG | Joint Photographic Experts Group | 联合图像专家组 |
LIP | List of Insignificant Pixels | 不重要像素列表 |
LIS | List of Insignificant Sets | 不重要集合列表 |
LSP | List of Significant Pixels | 重要像素列表 |
LZW | Lempel-Ziv-Welch | 蓝波-立夫-卫曲编码法 |
LZMA | Lempel-Ziv-Markov chain-Algorithm | |
MSE | Mean Square Error | 均方误差 |
MPEG | Motion Pictures Expert Group | 动态图像专家组 |
PSNR | Peak SignaN-to-noise Ratio | 峰值信噪比 |
RLE | Run Length Encoding | 游程编码 |
ROI | Region Of Interest | 感兴趣区域 |
SB | Sub Bands | 子带 |
SFQ | Space Frequency Quantization | 空频量化 |
SPECK | Set Partitioned Embedded bloCK | 设置分区嵌入式块 |
SPIHT | SetPartitioning in Hierarchical Trees | 多级树集合分裂 |
SR | Stack Run | 堆栈运行 |
SVD | Singular Value Decomposition | 奇异值分解 |
VQ | Vector Quantization | 向量量化 |
WDR | Wavelet Difference Reduction | 小波差约简 |
WMSN | Wireless Multimedia Sensor Network | 无线多媒体传感器网络 |
WSN | Wireless Sensor Networks | 无线传感器网络 |
写在最后:
第三章:Brotli压缩算法——一种开源的压缩算法
第四章 LZ77 压缩算法——基于字典及滑动窗口的无损压缩技术
写在最后:
OpenHarmony 成长计划—“啃论文俱乐部”(以下简称“啃论文俱乐部”)是在 2022年 1 月 11 日的一次日常活动中诞生的。截至 3 月 31 日,啃论文俱乐部已有 87 名师生和企业导师参与,目前共有十二个技术方向并行探索,每个方向都有专业的技术老师带领同学们通过啃综述论文制定技术地图,按“降龙十八掌”的学习方法编排技术开发内容,并通过专业推广培养高校开发者成为软件技术学术级人才。
啃论文俱乐部的宗旨是希望同学们在开源活动中得到软件技术能力提升、得到技术写作能力提升、得到讲解技术能力提升。大学一年级新生〇门槛参与,已有俱乐部来自多所高校的大一同学写出高居榜首的技术文章。
如今,搜索“啃论文”,人们不禁想到、而且看到的都是我们——OpenHarmony 成长计划—“啃论文俱乐部”的产出。
OpenHarmony开源与开发者成长计划—“啃论文俱乐部”学习资料合集
1)入门资料:啃论文可以有怎样的体验
https://docs.qq.com/slide/DY0RXWElBTVlHaXhi?u=4e311e072cbf4f93968e09c44294987d
2)操作办法:怎么从啃论文到开源提交以及深度技术文章输出https://docs.qq.com/slide/DY05kbGtsYVFmcUhU
3)企业/学校/老师/学生为什么要参与 & 啃论文俱乐部的运营办法https://docs.qq.com/slide/DY2JkS2ZEb2FWckhq
4)往期啃论文俱乐部同学分享会精彩回顾:
同学分享会No1.成长计划啃论文分享会纪要(2022/02/18) https://docs.qq.com/doc/DY2RZZmVNU2hTQlFY
同学分享会No.2 成长计划啃论文分享会纪要(2022/03/11) https://docs.qq.com/doc/DUkJ5c2NRd2FRZkhF
同学们分享会No.3 成长计划啃论文分享会纪要(2022/03/25)
https://docs.qq.com/doc/DUm5pUEF3ck1VcG92?u=4e311e072cbf4f93968e09c44294987d
现在,你是不是也热血沸腾,摩拳擦掌地准备加入这个俱乐部呢?当然欢迎啦!啃论文俱乐部向任何对开源技术感兴趣的大学生开发者敞开大门。
后续,我们会在服务中心公众号陆续分享一些 OpenHarmony 开源与开发者成长计划—“啃论文俱乐部”学习心得体会和总结资料。记得呼朋引伴来看哦。
扫码添加 OpenHarmony 高校小助手,加入“啃论文俱乐部”微信群