gzip/bzip2 の環境変数 GZIP/BZIP2 について検証する
2005-12-07-1
- gzip/bzip2 は環境変数 GZIP/BZIP2 で圧縮レベルのデフォルト値を指定できる
http://sonic64.com/2005-12-07.html
の記事を見て,そんな環境変数があったのを知らなかったので検証してみた.
ファイルは Apache の アクセスログで小さいの (3.8M) があったのでそれを使った.
% ls -la access_log
-rw-r--r-- 1 sunaoka staff 4015160 11月 30 19:26 access_log
まずは,gzip.デフォルトの圧縮レベルは -6.291059 バイト (284k) まで圧縮できる.
% time gzip access_log
0.56u 0.03s 0:00.56 105.3%
% ls -la access_log*
-rw-r--r-- 1 sunaoka staff 291059 11月 30 19:26 access_log.gz
次に,環境変数に圧縮レベル -9 を指定して圧縮.262166 バイト (256k) まで圧縮.
デフォルトに比べて約 90% 圧縮できた.
% time env GZIP=-9 gzip access_log
1.17u 0.01s 0:01.15 102.6%
% ls -la access_log*
-rw-r--r-- 1 sunaoka staff 262166 11月 30 19:26 access_log.gz
また,bzip2 の場合.174993 (171k) にまで圧縮できる.gzip -9 よりも,66% ほど小さくなる.
ただし,時間は 7 倍近くかかる.
% time bzip2 access_log
7.31u 0.07s 0:07.41 99.5%
% ls -la access_log*
-rw-r--r-- 1 sunaoka staff 174993 11月 30 19:26 access_log.bz2
そして,環境変数に圧縮レベル -9 を指定して圧縮.あれ?デフォルトと全然変わらない.
% time env BZIP2=-9 bzip2 access_log
7.30u 0.05s 0:07.33 100.2%
% ls -la access_log*
-rw-r--r-- 1 sunaoka staff 174993 11月 30 19:26 access_log.bz2
man をみてみると…
--best merely selects the default behaviour.
--best (-9) はただ単にデフォルトの動作を指定するだけとある.
そして,
The flags -1 through -9 specify the block size to be
100,000 bytes through 900,000 bytes (the default) respectively.
とのことなので bzip2 は -9 がデフォルトだそうです.
結論としては,gzip は環境変数 GZIP に -9 を指定してあげるのがよさそう.
bzip2 は,何もしなくていい.