7-zipの辞書サイズとWordサイズの影響。
〜(2007年10月8日追記)〜
LZMA、PPMd、BZip2の各圧縮メソッドの比較はこちら↓
http://d.hatena.ne.jp/aglassofwater/20071008
〜〜
どうも風邪を引いたようで、かなりあれな感じなので今日は休みました。
ロッパー。
ただ寝てるだけのゲロ生産機と化すのもどうかと思ったので、
拡張子 .7zの7-zipについてしらべてみました。
以前、処理形式の違いによる圧縮の効果を調べましたが、
今回は、辞書サイズとWordサイズの効果を調べました。
圧縮元ファイルは前回と同じものです。
(2006年05月20日■.7zの圧縮試験〜プッシュ!!とテックジャイアンの7月号を購入)
圧縮レベルは最高で、圧縮メソッドはLZMA、ソリッド書庫として圧縮を行いました。
辞書サイズを大きくするとメモリの占有量が増加し、
Wordサイズを大きくすると処理時間が増加するというトレードオフがあります。
ハードウェアに対する処理の負荷は、家の環境*1では大まかに言って、
辞書サイズ64kB、Wordサイズ8の場合、処理時間が20秒ほど、占有メモリは35MBですが、
辞書サイズ128MB、Wordサイズ273の場合、処理時間は5分30秒ほど、占有メモリは1375MBとなります。
LZMAは圧縮時にメモリを食いますが、解凍時には、1/10以下しかメモリを食いません。
圧縮した43枚の2次元壁紙ファイルは1280×960,24bitのBMPで一枚あたり3.6MB(3,686,454Byte)で合計151MB(158,517,522Byte)。
辞書サイズが一枚のファイルサイズを越えると、急激に圧縮率が上がるようです。
辞書サイズが一枚のファイルサイズの2倍を越えると、圧縮率はほぼ一定になりました。
(3倍、4倍、5倍あたりにも肩があるけど、よく見ないとわからないレベル。)
また、Wordサイズに反比例?指数関数的?にファイルサイズが減少します。
しかし、私のやった実験では、128wordあたりにローカル極大があって単調減少というわけでもなさそう。
Wordサイズに関しては、辞書サイズほどの急峻な変化が見られないので、ほどほどでよさそうな感じがします。
このファイルの場合、辞書32MB、Word96あたりで十分な気が。(14,129,973Byteになる。128MB-273だと、14,001,688Byte)
朦朧とした状態でやってたので、マトリックスの埋め間違いがあるかもしれないけど、生データも下に載せときました。
7zの圧縮では、圧縮元の個々のファイルサイズをチェックして、
辞書サイズをそのファイルサイズの2倍以上にしておけばそれなりの圧縮が得られそうです。
バックアップ、記録保存、テンポラリなどなど、アーカイブの目的に合わせて、
マシンのメモリ・CPUパワーと解凍する頻度から、推奨するパラメータを算出してくれるソフトがあれば便利な人も多いだろう。
Wordサイズ8 | 12 | 16 | 24 | 32 | 48 | 64 | 96 | 128 | 192 | 256 | 273 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
辞書サイズ0.064 | 21509112 | 20739849 | 20321132 | 19850882 | 19587433 | 19257043 | 19073670 | 18882044 | 18798836 | 18724423 | 18701822 | 18694236 |
1 | 21707870 | 20888157 | 20449416 | 19938010 | 19640520 | 19279908 | 19067041 | 18830473 | 18725098 | 18630314 | 18598669 | 18592050 |
2 | 21731389 | 20906751 | 20466645 | 19950778 | 19658405 | 19296742 | 19080543 | 18837278 | 18727844 | 18628226 | 18594102 | 18585116 |
3 | 21797140 | 20963755 | 20520625 | 19994300 | 19658405 | 19327416 | 19104334 | 18851154 | 18733799 | 18628855 | 18595177 | 18587353 |
4 | 17356829 | 16417894 | 15851360 | 15348548 | 15046180 | 14774828 | 14651096 | 14539481 | 14490119 | 14443160 | 14419088 | 14414459 |
6 | 17455875 | 16425793 | 15859423 | 15350016 | 15048406 | 14774197 | 14651988 | 14542331 | 14490506 | 14439952 | 14419176 | 14413658 |
8 | 17356829 | 16299160 | 15708523 | 15181503 | 14868236 | 14598968 | 14481172 | 14376029 | 14326673 | 14282500 | 14258217 | 14251630 |
12 | 17225921 | 16128881 | 15519181 | 14980800 | 14659851 | 14392910 | 14281436 | 14184248 | 14138685 | 14094379 | 14071703 | 14066846 |
16 | 17219399 | 16114186 | 15500451 | 14956524 | 14638065 | 14369382 | 14256718 | 14160514 | 14115946 | 14070213 | 14047672 | 14045079 |
24 | 17228768 | 16100053 | 15483224 | 14934908 | 14617941 | 14349759 | 14237775 | 14140905 | 14093078 | 14048368 | 14024596 | 14019751 |
32 | 17244666 | 16104057 | 15483315 | 14931726 | 14609745 | 14343250 | 14229338 | 14129973 | 14083321 | 14036825 | 14012456 | 14008583 |
48 | 17280608 | 16126339 | 15494871 | 14937343 | 14613507 | 14343546 | 14229137 | 14130463 | 14080351 | 14034356 | 14009598 | 14005666 |
64 | 17298229 | 16139641 | 15501918 | 14937789 | 14614912 | 14343490 | 14230701 | 14127800 | 14078917 | 14029953 | 14008168 | 14003005 |
96 | 17318819 | 16151745 | 15510053 | 14944366 | 14616326 | 14345056 | 14229038 | 14128861 | 14077964 | 14031940 | 14006720 | 14003663 |
128 | 17327629 | 16158624 | 15514613 | 14946476 | 14618539 | 14345587 | 14003005 | 14003663 | 14077512 | 14030896 | 14006294 | 14001688 |