gzipの各圧縮レベルでの圧縮率と処理時間の計測
Apache の mod_deflate で DeflateCompressionLevel を調整するにあたり、gzipで各圧縮レベルでの圧縮率と処理時間を調べました。
結果
圧縮率を指定しない場合は 6 が選択されるようです。
レベル | サイズ(Byte) | 圧縮率 | 10,000回圧縮時の 処理時間 |
6とのサイズ比 | 6とのサイズ差 |
---|---|---|---|---|---|
無圧縮 | 58,757 | - | - | - | - |
1 | 12,377 | 78.94% | 0m23.328s | 1.17 | 1,769 |
2 | 11,979 | 79.61% | 0m27.751s | 1.13 | 1,371 |
3 | 11,757 | 79.99% | 0m36.023s | 1.11 | 1,149 |
4 | 11,076 | 81.15% | 0m43.181s | 1.04 | 468 |
5 | 10,771 | 81.67% | 0m43.981s | 1.02 | 163 |
6(デフォルト) | 10,608 | 81.95% | 0m44.991s | 1.00 | 0 |
7 | 10,575 | 82.00% | 0m46.586s | 1.00 | -33 |
8 | 10,519 | 82.10% | 0m54.098s | 0.99 | -89 |
9 | 10,480 | 82.16% | 1m03.603s | 0.99 | -128 |
1か2が良さそうですね。
サンプルファイル
とあるサイトのトップページ(58,757Byte)
環境
CPU: Core2Duo E8400 3.0GHz
MEM: 5GB
OS: Ubuntu 14.04 32bit
コマンド
それぞれの圧縮レベルで10,000回圧縮した時にかかった時間をtimeコマンドで計測。
timeコマンドのreal値を取りました。
$ for rate in $(seq 1 9) ; do echo "rate ${rate}"; time for i in $(seq 1 10000) ; do gzip -c -${rate} index.html > /dev/null ; done; echo ""; sleep 10; done
読みやすくしてみました。下は試してないので間違ってるかも
$ for rate in $(seq 1 9)
do
echo "rate ${rate}"
time for i in $(seq 1 10000) ; \
do gzip -c -${rate} index.html > /dev/null ; \
done;
echo ""
sleep 10
done