写点什么

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:007408
用户头像

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

关注

评论

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

如何将文章高效发布到多个平台|MWeb 七牛云图床配置

彭宏豪95

写作 markdown 图床 MWeb

技术选型(一)

wing

极客大学架构师训练营

训练营第五周作业 1

仲夏

极客大学架构师训练营

架构师训练营 - 第 5 周学习总结(1 期)

阿甘

[架构师训练营第 1 期] 第五周学习总结

猫切切切切切

极客大学架构师训练营

week05作业

追风

架构师一期

食堂就餐卡设计

博博

【第五周】课后作业

云龙

架构师训练营第1期第五周作业

Leo乐

极客大学架构师训练营

第一周学习总结

晴空万里

极客大学架构师训练营

架构师训练营week05总结

FG佳

架构师一期

架构师训练营 - 第 5 周课后作业(1 期)

阿甘

架构师训练 第一周 学习总结

阿光

架构师训练营 1 期 -- 第五周笔记

曾彪彪

极客大学架构师训练营

架构师训练营 Week5 技术选型 - 缓存/消息队列/负载均衡

负载均衡 缓存 消息中间件

第一周

宇文青

训练营第五周作业 2

仲夏

极客大学架构师训练营

第五周 作业一 第一题

sean

架构设计学习笔记1

Arthur

极客大学架构师训练营

架构设计-UML案例

第一章学习笔记

博博

极客时间架构 1 期:第5周 技术选型(一) - 学习总结

Null

架构师训练营第 2 期 第一周作业1

月下独酌

极客大学架构师训练营

架构师 01 期,第五周课后作业

子文

week05学习总结

追风

架构师一期

架构师训练营第五周课程笔记及心得

Airs

架构师训练营 第一周 作业 食堂就餐卡系统设计

阿光

分布式架构技术选型总结(一)

天天向上

极客大学架构师训练营

UML作图

Arthur

极客大学架构师训练营

架构师训练营week05作业(hash算法)

FG佳

架构师一期

Week 1 :架构的方法(作业一)

shuyaxx

Google开源Brotli压缩算法-InfoQ