Google製の新しい圧縮アルゴリズム Brotli を軽く使ってみた
元記事(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。
カッコ内の割合は元ファイルサイズに対する割合。
quality | Brotli size(bytes)/time(sec) | Gzip size(bytes)/time(sec) |
---|---|---|
1 | 78072 (31.5%) / 0.010 | 89516 (36.2%) / 0.009 |
2 | 77253 (31.2%) / 0.011 | 85457 (34.5%) / 0.009 |
3 | 76537 (30.9%) / 0.010 | 82114 (33.2%) / 0.011 |
4 | 75377 (30.4%) / 0.012 | 77297 (31.2%) / 0.011 |
5 | 70360 (28.4%) / 0.016 | 74836 (30.2%) / 0.013 |
6 | 69316 (28.0%) / 0.016 | 73524 (29.7%) / 0.018 |
7 | 68583 (27.7%) / 0.024 | 73341 (29.6%) / 0.020 |
8 | 68172 (27.5%) / 0.032 | 73214 (29.6%) / 0.027 |
9 | 67785 (27.3%) / 0.045 | 73213 (29.6%) / 0.027 |
10 | 61849 (25.0%) / 0.527 |
まとめ
- Brotliのほうがファイルサイズが小さくなる分、時間がかかっていた(特に最高品質の場合)。
- 最も圧縮されたファイルサイズを比較するとBrotliのほうがGzipよりも16%ほど圧縮されていた。
bro
コマンドでは--decompress
オプションによって元のファイルに伸張することができます。