《老子到此一游系列》之 老子为什么是老子 ——综述视角解读压缩编码 第三章 Brotli介绍(转发)

《老子到此一游系列》之 老子为什么是老子 ——综述视角解读压缩编码 第三章 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

缩略语列表

缩写英文中文
ACAlternating Current交流
ASWDRAdaptively Scanned Wavelet Difference Reduction自适应扫描小波差约简
ATMAsynchronous Transfer Mode异步传输模式
CRCompression Ratio压缩比
CREWCompression with Reversible Embedded Wavelets可逆嵌入小波压缩
CSSCascading Style Sheets层叠样式表
DCData Compression数据压缩
DCTDiscrete Cosine Transform离散余弦变换
DWTDiscrete Wavelet Transform离散小波变换
EBCOTEmbedded Block Coding with Optimised Truncation优化截断的嵌入式块
ECEmbedded Coding嵌入式编码
EPWICEmbedded Predictive Wavelet Image Coder嵌入式预测小波图像
ETCEncryption Then Compression加密后压缩
EZWEmbedded Zerotree Wavelets嵌入式零树小波
GWGeometric Wavelet几何小波
HVSHuman Visual System人类视觉系统
JPEGJoint Photographic Experts Group联合图像专家组
LIPList of Insignificant Pixels不重要像素列表
LISList of Insignificant Sets不重要集合列表
LSPList of Significant Pixels重要像素列表
LZWLempel-Ziv-Welch蓝波-立夫-卫曲编码法
LZMALempel-Ziv-Markov chain-Algorithm
MSEMean Square Error均方误差
MPEGMotion Pictures Expert Group动态图像专家组
PSNRPeak SignaN-to-noise Ratio峰值信噪比
RLERun Length Encoding游程编码
ROIRegion Of Interest感兴趣区域
SBSub Bands子带
SFQSpace Frequency Quantization空频量化
SPECKSet Partitioned Embedded bloCK设置分区嵌入式块
SPIHTSetPartitioning in Hierarchical Trees多级树集合分裂
SRStack Run堆栈运行
SVDSingular Value Decomposition奇异值分解
VQVector Quantization向量量化
WDRWavelet Difference Reduction小波差约简
WMSNWireless Multimedia Sensor Network无线多媒体传感器网络
WSNWireless 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 高校小助手,加入“啃论文俱乐部”微信群