zlibに落ち着く
今日はlzoをSquashFSで使えるようにしようと、かなりがんばっていたのですが、技術不足であります…。
lzoは高速圧縮・高速展開に焦点を合わせた圧縮アルゴリズムで、圧縮率は低めですが、zlibと比べて特に圧縮速度は圧倒的に速いです。
今後の記録メディアや、最近のネットワークの物理層の進化を思うに、おそらく圧縮率より展開速度が重要になってきます。そこで、lzoはかなり良いと思ったわけです。
でも、lzoは速いと言っても、アルゴリズム的にも速いのでしょうが、アセンブラで最適化している影響が結構大きいようです。すると、今後PowerPCやSparcに移植するときに問題が…(しないか。)
結局、ベンチマークしてみると、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の圧倒的な圧縮速度は魅力的。デバッグには便利。オプションで圧縮アルゴリズムを変えられると良いな。