mkuzip の最大が 129536 に落ちた様だ2019年04月30日 12時40分11秒

以前は mkuzip の最大のブロックサイズは 130048 だった。

これは MAXPHYS ブロック毎に圧縮されているのが背景にある。

# define MAXPHYS                               512 * 1024
そして、これに gzip のヘッダが追加される。そこで、130560 から gzip ヘッダ分を考慮した 512 を引いた数で大丈夫だった。圧縮のほとんど効かなかったブロックでも、130048 に収まっていた。

mkzuip が xz 圧縮をサポートした頃に gzip の動作も変わってしまった様に見える。ヘッダが微妙に大きくなってしまったのか、圧縮効率が微妙に悪くなったのか。まあ、動作すれば良いので、詳しくは調べていない。そのため、1024 を引いた mkuzip -s 129536 が現状でのブロックの最大の大きさだ。

なお、xz をサポートしたときに、ブロック単位の並列圧縮処理の実装が入った。xz は圧縮に時間がかかるので、CPU の数に余裕がある機械では、大幅に圧縮時間が短縮されている。