2009年05月07日 08:00 [Edit]
tips - xzってどうよ!?
そう奥村先生がおっしゃるなら、というわけで試してみた。
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 src
87.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
Posted by dankogai at 08:00│Comments(1)│TrackBack(1)
この記事へのトラックバックURL
この記事へのトラックバック
スタンダードなgzipはもちろんのことbzip2をも上回る高い圧縮率を誇る「x...
多数のファイルを圧縮するときはzipじゃなくてtar+gzipを使う【Web屋のネタ帳】at 2009年05月07日 21:11
この記事へのコメント
測るべきは圧縮より伸張のコストだろう…
1回圧縮したものが何百万回も伸張されるんだから。
1回圧縮したものが何百万回も伸張されるんだから。
Posted by 774 at 2009年05月07日 14:07