元記事(2015年9月22日の記事) Introducing Brotli: a new compression algorithm for the internet http://google-opensource.blogspot.co.at/2015/09/introducing-brotli-new-compression.html

関連記事(2015年9月24日の記事) 米Google、新しいデータ圧縮アルゴリズム「Brotli」を発表 https://osdn.jp/magazine/15/09/24/203000

準備

環境はMac OS X 10.10.5で試しました。

$ git clone https://github.com/google/brotli
$ cd brotli/tools
$ make

broという実行ファイルができあがる。

圧縮するサンプルファイル(uncompressedなjqueryのjsファイル)

$ wget http://code.jquery.com/jquery-2.1.4.js
$ wc -c jquery-2.1.4.js
  247597 jquery-2.1.4.js

実験

BrotliとGzipで、圧縮レベルを1〜10まで(gzipは9まで)変えて圧縮して速度とファイルサイズを比較する。 ※以下は、2015年9月28日現在の実験結果であり、以後コードの変更等で結果が変わる可能性があります。また、圧縮対象によって結果が変わる可能性があります。あくまでも目安です。

Brotli

time ./bro --quality $QUALITY --input jquery-2.1.4.js --output jquery.bro

gzip(Apple gzip 242)

time gzip -$QUALITY jquery-2.1.4.js

測定結果

オリジナルファイルサイズ: 247597 byte。 カッコ内の割合は元ファイルサイズに対する割合。

qualityBrotli size(bytes)/time(sec)Gzip size(bytes)/time(sec)
178072 (31.5%) / 0.01089516 (36.2%) / 0.009
277253 (31.2%) / 0.01185457 (34.5%) / 0.009
376537 (30.9%) / 0.01082114 (33.2%) / 0.011
475377 (30.4%) / 0.01277297 (31.2%) / 0.011
570360 (28.4%) / 0.01674836 (30.2%) / 0.013
669316 (28.0%) / 0.01673524 (29.7%) / 0.018
768583 (27.7%) / 0.02473341 (29.6%) / 0.020
868172 (27.5%) / 0.03273214 (29.6%) / 0.027
967785 (27.3%) / 0.04573213 (29.6%) / 0.027
1061849 (25.0%) / 0.527

まとめ

  • Brotliのほうがファイルサイズが小さくなる分、時間がかかっていた(特に最高品質の場合)。
  • 最も圧縮されたファイルサイズを比較するとBrotliのほうがGzipよりも16%ほど圧縮されていた。
  • broコマンドでは--decompressオプションによって元のファイルに伸張することができます。