そう奥村先生がおっしゃるなら、というわけで試してみた。
gzipの代わりにxzを使おう | Okumura's Blogこれからは gzip と打つ代わりに xz と打とう。キーストローク数が半減するだけでなく,ディスク資源が半減し,地球温暖化も半減する。
下準備
具体的には、xz
コマンドとGnu Tar 1.22以降を用意することになる。gzやbz2と違って、gnu tar も xz はパイプ経由で扱っているので、gnu tar だけインストールしても
% gnutar Jcvf perl-5.10.0.tar.xz perl-5.10.0 perl-5.10.0/ perl-5.10.0/apollo/ perl-5.10.0/apollo/netinet/ perl-5.10.0/apollo/netinet/in.h perl-5.10.0/Artistic perl-5.10.0/AUTHORS tar (child): xz: Cannot exec: No such file or directory tar (child): Error is not recoverable: exiting now Broken pipe
という羽目になる。
Mac OS X
MacPorts経由で。
% sudo port selfupdate % sudo port install gnutar xz-devel
ちなみにデフォルトでインストールされている/usr/bin/gnutar
のバージョンは、Leopardでは1.15.1だった。
FreeBSD
gtar
とlzmautils-devel
を最新のportsより。コマンド名とport名が異なる点に注意。
% su -m # portupgrade -NPp lzmautils-devel gtar
Ubuntu 8.10
今なおtarの最新版は1.20.1。ちなみにUbuntu 9.04でない理由は、VMWare toolsがまだ対応していないから。
結果
結論だけまとめると、「圧縮率も高いが、コストも高い」ということになる。キーストローク数とディスク容量はさておき、地球温暖化が半減するかは実に微妙である。
まずは圧縮率。ここでは FreeBSD-7-stable の /usr/src
を圧縮してみた。
% du -s /usr/src 502974 /usr/src % du stable-src.tar.* 85168 stable-src.tar.bz2 108224 stable-src.tar.gz 71584 stable-src.tar.xz
売りだけあって、素晴らしい。
それでは、圧縮速度はどうか。なかなかのorzぶりである。
/usr/bin/time -l gtar zcvf ~/stable-src.tar.gz src87.42 real 54.90 user 5.51 sys 1296 maximum resident set size 53 average shared memory size 683 average unshared data size 128 average unshared stack size 334 page reclaims 0 page faults 0 swaps 39799 block input operations 845 block output operations 0 messages sent 0 messages received 0 signals received 91099 voluntary context switches 185081 involuntary context switches/usr/bin/time -l gtar jcvf ~/stable-src.tar.bz2 src
180.93 real 174.53 user 5.02 sys 8108 maximum resident set size 31 average shared memory size 705 average unshared data size 128 average unshared stack size 2091 page reclaims 0 page faults 0 swaps 1 block input operations 665 block output operations 0 messages sent 0 messages received 0 signals received 64540 voluntary context switches 110077 involuntary context switches/usr/bin/time -l gtar Jcvf ~/stable-src.tar.xz src
581.79 real 570.85 user 7.70 sys 96344 maximum resident set size 35 average shared memory size 701 average unshared data size 128 average unshared stack size 24082 page reclaims 0 page faults 0 swaps 2 block input operations 559 block output operations 0 messages sent 0 messages received 0 signals received 74128 voluntary context switches 134298 involuntary context switches
圧縮時間6.65倍、メモリー消費74.3倍というのは、むしろ地球温暖化を促進しそうではある。
とはいえ、bzip2を超える圧縮率というのは、実に魅力的でもあるし、解凍に必要なリソースはここまで差が出ないので、GNU coreutils のように何百万回とダウンロードされるようなファイルには確かによさそうだ。
Dan the XZ Newbie
1回圧縮したものが何百万回も伸張されるんだから。