zlibに落ち着く

今日はlzoSquashFSで使えるようにしようと、かなりがんばっていたのですが、技術不足であります…。

lzoは高速圧縮・高速展開に焦点を合わせた圧縮アルゴリズムで、圧縮率は低めですが、zlibと比べて特に圧縮速度は圧倒的に速いです。

今後の記録メディアや、最近のネットワークの物理層の進化を思うに、おそらく圧縮率より展開速度が重要になってきます。そこで、lzoはかなり良いと思ったわけです。

でも、lzoは速いと言っても、アルゴリズム的にも速いのでしょうが、アセンブラで最適化している影響が結構大きいようです。すると、今後PowerPCSparcに移植するときに問題が…(しないか。)

結局、ベンチマークしてみると、zlibは圧縮率と展開速度のバランスが良くて、非常に完成度の高いものだと思います。ということで、zlibに落ち着きました。でもでも、LZMAはパッチを当てるときに変な事をやってしまったのかも…。圧縮の方は問題ないと思うけど、展開の方(カーネルモジュール)はちょっと不安。


ついでにベンチマークの結果を表にまとめておきます。cloop(圧縮はAdvanceCOMP、展開はzlib)のコンパイルも出来たので、追加。lzoは圧縮だけ。

圧縮方法 サイズ 圧縮時間 展開時間
SquashFS-zlib 531MB 5分3秒 17秒 バランスが良い
SquashFS-LZMA 478MB 21分41秒 1分1秒 圧縮率が高いが、遅い
SquashFS-lzo 657MB 43秒 - 圧縮率は低いが、速い
cloop 531MB 5分8秒 37秒 アルゴリズムはSquashFS-zlibと同じ

…cloopって、展開速度遅くありませんか?SquashFSの方が、ループバックマウントのオーバーヘッドどころか、逆に速いです。…でもまぁ、十分速いですね。誤差範囲?ディスクキャッシュとか考慮してないからな…。1回しか測ってないし。

lzoの圧倒的な圧縮速度は魅力的。デバッグには便利。オプションで圧縮アルゴリズムを変えられると良いな。