写点什么

Google 开源 Brotli 压缩算法

2015 年 10 月 07 日

谷歌非常重视互联网用户的体验,而提升网页加载速度是提升用户体验的一种重要方式。两年前,他们发布了 Zotfli 压缩算法。该算法在默认设置下的输出比 zlib 的最大压缩比输出还要小 3-8%。PNG 优化器、Web 内容预处理等许多压缩方案中都集成了该算法。基于该算法的应用情况,结合其它现代压缩需求,谷歌开发并开源了一个新的算法—— Brotli 压缩算法。该算法由谷歌压缩团队的 Jyrki Alakuijala 和 Zoltan Szabadka 开发,其中 Jyrki 亦是 Zotfli 压缩算法的创建者。

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

谷歌对这种数据格式寄予了厚望,Zoltan 写道:

更小的压缩尺寸可以提供更好的空间利用率和更快的页面加载速度。我们希望,在不远的将来,主流浏览器都能支持这种格式,而且,更小的压缩尺寸会给移动用户带来额外的好处,比如更低的数据传输费用和电量消耗。

谷歌的这份发布公告吸引了许多网友的关注。网友 Szabolcs Péter 指出,Brotli 在 2013 年就已经发布,不应该算是一种新的压缩算法了。对此,Jyrki 答复道:

Brotli 的第一个版本是用于 Web 字体一次性压缩的非对称算法,而现在的 Brotli 已经扩展成为一个通用的无损压缩算法。我们重写了编码器的重要组成部分,提高了压缩比以及编码器和解码器的速度,改进了流 API,增加了质量等级,减少了解码内存占用,并考虑了更多的应用场景,Brotli 在各种平台上的性能也更平衡了。我们今天的发布就是关于这个。我们认为,它已经做好准备吸引更多注意及广泛应用于各种场景。

网友 Lucas Marsh 则对该算法的性能提出了质疑。他在一项基准测试中发现,Brotli 虽然比 bzip 好,但并没有比 LZMA 强。对此,Jyrki 是这样解释的:

从设计上讲,对于非常大的文件,LZMA 和 LZHAM 压缩得更多,尤其是当文件大小超过 16MB 时。提高大文件的压缩比有三个缺点:增加了解码时的内存占用,降低了小文件压缩的性能以及在某种程度上降低了编码和解码速度。Brotli 通常压缩的更多的是 0.5-1MB 的文件。当你有更大的数据,并且不用为解码内存占用担心时,可以通过使用更大的滑动窗口来提高 Brotlin 的性能——对于大文件,可以试下将窗口大小参数设为 24 位(16MB)。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015 年 10 月 07 日 19:007303
用户头像

发布了 1008 篇内容, 共 312.7 次阅读, 收获喜欢 281 次。

关注

评论

发布
暂无评论
发现更多内容

架构师训练营第二周课后作业

Gosling

极客大学架构师训练营

flutter 中的video player对比学习

Daniel

第二周学习总结

饭桶

开放的是金融服务 必须确保持牌经营

CECBC区块链专委会

金融 银行

第2周 框架设计总结

bearlu

第二周作业

饭桶

食堂就餐卡系统设计

谭明华

极客大学架构师训练营

如果编程语言是一门武功绝学

C语言与CPP编程

c++ 编程 程序员人生 程序人生 编程语言

UML练习2

何毅曦

周总结二

何毅曦

基础框架第二周总结「架构师训练营第 1 期」

天天向善

基础框架

超全算法笔试模拟题精解合集,这份《程序员面试宝典》简直太牛了

Java架构之路

Java 数据结构 面试 算法 编程语言

第二周 作业一【未陌】

a d e

设计模式 架构设计原则 基本原则

LeetCode题解:590. N叉树的后序遍历,递归,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

架构师训练营 Week2 - 课后作业

依赖倒置原则 接口隔离原则

架构师训练营 Week2 框架设计- 学习总结SOLID

最新整理国内知名大厂7篇Java岗面试真题,奥利给!

Java架构师迁哥

小白也能看懂的REDIS教学基础篇——REDIS基础数据结构

云流

Java 数据库 redis

2020年高频Java面试题集锦(含答案),让你的面试之路畅通无阻!

Java架构之路

Java 程序员 面试 编程语言

数据结构与算法:递归

Java架构师迁哥

Java 编程 程序员 算法

第二周 作业二:框架设计学习总结【未陌】

a d e

设计模式 架构设计

第二周作业二-学习总结

道长

极客大学架构师训练营

腾讯某Java程序员为了肝出《300页图解网络知识》+《计算机底层操作系统》超全教程差点猝死!

Java架构之路

Java 程序员 面试 编程语言 操作系统

架构1期-第二周作业一

道长

极客大学架构师训练营

听说有人不了解柔性数组

C语言与CPP编程

程序员 数组 编程语言 C语言

极客时间架构师培训 1 期-第2周总结

Kaven

区块链+跨境贸易:让跨境数据高效共享可信

CECBC区块链专委会

区块链 跨境贸易 跨境电子商务

第二周作业

华美而火锅

架构师训练营第二周学习总结

Gosling

极客大学架构师训练营

linux虚拟摄像头vivid配置

良知犹存

Linux 虚拟摄像

专升本啦!!!

迷羊

Google开源Brotli压缩算法-InfoQ