Archon2で7z圧縮する際の圧縮モード

アーカイバArchon2を使っているが、最近は7z形式に圧縮することが多くなった。
そこで疑問なのが、圧縮モードの違い。Archon2では以下の6種類が使える。

これらの名前はArchon2側が勝手に付けてる名前なので、実際にどういうオプションで圧縮するモードなのか分かりづらい。今まであまり考えなかったが、意外と圧縮率に差が出る場合もあるので、調べてみることにした。

各モードの内容

LZMA
LZMA方式で圧縮。多分7-zipでのデフォルト設定。どうやら圧縮率最大設定らしい。
LZMA(std)
少しだけ圧縮率を下げた設定。開発時に最大圧縮率だとエラーが出る環境があったらしく、エラー回避のために用意されている。stdは安定のsteadyか。エラーが出ないなら無用。
LZMA(fast)
圧縮率を下げて処理速度を上げた設定。使いどころが無い。
LZMA(not_solid)
ソリッド圧縮*1をしない設定。処理速度が若干上がるかもしれないが、基本的にはサイズが大きくなってしまうので無用。
PPMd
PPMd方式で圧縮。特定の場合(後述)にLZMAを超える圧縮率と圧縮速度になる。
password
見たまんま、暗号化してパスワード付きで圧縮するモード。
password(header)
上記に加え、ヘッダも暗号化する。書庫閲覧ソフトなどで見たときに、ファイルの中身だけでなく圧縮しているファイルの種類や数、ファイル名まで暗号化できる。

使い分け

まず、暗号化したい場合はpassword(header)を使う。ヘッダも暗号化しておかないと、ファイル名を見られるだけでも困るという場合に対処できない。
LZMAの4種類については、無印のLZMAだけでいいだろう。
問題は、LZMAとPPMdのどちらを使うかだが、この二つは全く違う方式で圧縮しているので、場合によって優劣が変わる。
PPMdは、その特性上「同じフレーズが繰り返されているファイル」に対して圧縮率が高くなる傾向にある。つまり、PPMdは類似性の高い複数テキストで高い圧縮率を発揮する。具体的には、Webサイトのアクセス解析ログ(200MB程度)を圧縮してみた結果、サイズがLZMAの2/3以下になった。
これに対しLZMAは、汎用的に使え、バイナリファイルや全く類似性の無いファイルをまとめて圧縮する場合にPPMdより圧縮率が高くなる。メモリ使用量も比較的小さい。
従って、基本的にはLZMAを使い、テキスト系の同種・類似ファイルを圧縮する場合にだけPPMdを使うのが正解だろう。

*1:一旦無圧縮で固めてから一つのファイルとして圧縮し直す方法。細切れにならないのでファイル数が多い場合に効果大。