Brotli 概述-繁依Fanyi

Brotli 介绍

现代的网页通常包含了由大量的HTML, CSS和JavaScript代码编写的图片、视频或其他大型文件数据,导致了网页打开的速度很慢。如果能有一种好的压缩算法将这些内容和数据进行压缩后传输,那么用户只需要等待很短时间就可以完全加载整个页面上的内容。

Brotli 是 Google 在 2013 年底推出的一款开源通用数据压缩器,并在 Github 开源,现在已经被大多数知名浏览器和 Web 服务器采用。Brotli 的设计的主要目标是压缩 Internet 上的数据,这意味着它可以优化解码时使用的资源,同时实现最大的压缩密度。

Brotli 概述

  • Brotli 的编码器库提供了 12 个质量级别(从 0 到 11)。它们是⽤压缩速度换取压缩效率的压缩模式:更⾼质量的级别速度较慢,但会产⽣更好的压缩⽐。
  • 一个 Brotli 压缩⽂件由 元块(meta-blocks) 集合组成。每个元块最多可容纳 16MiB,由两部分组成:一个 数据部分(data part),它存储 LZ77 压缩的放⼊块,以及一个 标题(header)每个块的压缩遵循经典的 LZ77 压缩⽅案并由计算具有良好的熵的 LZ77 解析计算 LZ 短语的简洁编码这两个主要阶段组成

Brotli 的优势

Brotli 的优势体现在哪里呢?可以参考下图 Brotli 与其它压缩算法在三种不同情况下的对比情况。

  • 测试环境:以下结果的测试计算机搭载 Intel® Xeon® CPU E51650 v2,运行频率为 3.5 GHz,具有六个内核和六个额外的超线程上下⽂。运行 linux 3.13.0。所有编解码器均使⽤相同的编译器 GCC 4.8.4 在 O2 级别优化进行编译。

情况1:压缩Canterbury语料库的11个文件

此表显示了 Canterbury语料库上压缩算法的结果。Canterbury 语料库包含 11 个文件,我们显示了测量属性的几何平均值:压缩比压缩速度解压缩速度

在这里插入图片描述
在这里插入图片描述

情况2:压缩包含 93种不同语言的 1285个HTML文档

压缩算法对从 Internet 爬网的文档样本的结果。该示例包含 1285 个 HTML 文档,其中包含 93 种不同的语言。
在这里插入图片描述

情况3:压缩 enwik8文件

enwik8 文件上不同压缩算法的结果。
在这里插入图片描述

结果

  1. 质量级别(quality setting)为1的 brotli的压缩速度和解压缩速度与与质量级别为1的deflate相同,但brotli的压缩比deflate提高了 12% ~ 16%。
  2. 质量级别为9的 brotli 与 质量级别为9的deflate也大致相同,但 enwik8的解码速度提高了28%,压缩比提高了 13% ~ 21%。
  3. 质量级别为11的 brotli压缩速度明显快于 zopfli,压缩比高出 20% ~ 26%。

总结

Brotli 是一款非常优秀的通用数据压缩器,并在 GitHub 上开源,接下来一段时间将继续走在啃论文的道路上,努力学习相关压缩算法。

参考

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容