xz utilsとgzip/bzip2の比較
なんか変だと思ったらすっかり勘違いをしていたことに今ごろ気づいた。LZMAの人たちが新しくxz utilsというのを作ってたのね。で、これまでLZMAに割り当てられていたJというフラグをxz utilsに割り当て直すとともに、.xzという拡張子もサポートしますよと。LZMA自体は2007年からずっとGNU tarでサポートされていて、拡張子としては.lzmaが使われていたらしい。そうだったのか……己の不明を恥じるのみです。
という訳でもう一度比較。昨日と同じファイルを使った。のでデータはxz utilsだけ。その他の環境は一緒。
圧縮後のサイズ。
2527556 Gauche.tar.xz
圧縮、伸長の時間。
% time xzcat -z Gauche.tar > Gauche.tar.xz xzcat -z Gauche.tar > Gauche.tar.xz 25.10s user 0.30s system 98% cpu 25.762 total % time xzcat Gauche.tar.xz > /dev/null xzcat Gauche.tar.xz > /dev/null 0.44s user 0.03s system 95% cpu 0.489 total
ということで、圧縮効率ではLZMAの方がちょっといいが、圧縮時間はちょっと短縮。逆に伸長時間はちょっと長くなっている。圧縮効率の問題かも。-0から-9まで指定できるようで、-9としても圧縮にかかる時間はそれほど変わらないが、ファイルサイズは2429624バイトまで減少してlzmaを抜いた。この辺のチューニングはまだこれからなのかも。
全体的にオプションとか使い方がgzip/bzip2に似ているのが嬉しいが、試した感じでははLZMAとよく似た挙動になっている。てことでたぶん基本的なアルゴリズムにはそう大きな変更はないのだろうから結論は変えなくていいのではないかと思う。ただ、lzmaもサポートされてたわりに全く広まった気配がないことを考えると、けっきょくgzとbz2の優位はゆるがないかもねえ、と思い直した。
ところでtrimpath-junctionの圧縮率が大して効率よくない件についてですが、逆にgzipでもかなりうまく圧縮できてしまっているのでそれほど改善されているように見えないというだけの話のような気がしないでもない。