bsdiffとxdeltaを比較してみた
« shivaken
昨日の記事で出てきたbsdiff、実際に使ったことがなかったのだが、xdeltaよりも50%〜80%も出力する差分が小さいらしい。
ruby-1.8.7-p160とruby-1.8.7-p174を対象に比べてみる。
まず、元のサイズを調べる。
ruby-p160 949579 bytes (約928KB)
ruby-p174 950091 bytes (約928KB)
じゃあ、bsdiff、xdeltaで差分を作ってみよう。
これはスゴいよ!確かにbsdiffで作った差分はxdeltaによる差分の15%程でしかない。念のため、復元をして、md5をチェックしてみる。
しかし、このbsdiffの10倍の性能を誇るGoogleの技術、スゴすぎる。
ruby-1.8.7-p160とruby-1.8.7-p174を対象に比べてみる。
まず、元のサイズを調べる。
ruby-p160 949579 bytes (約928KB)
ruby-p174 950091 bytes (約928KB)
じゃあ、bsdiff、xdeltaで差分を作ってみよう。
$ bsdiff ruby-p160 ruby-p174 ruby-p160-p174.bsdiff
→ ruby-p160-p174.bsdiff 22152 bytes (約22KB)
$ xdelta delta ruby-p160 ruby-p174 ruby-p160-p174.xdelta
→ ruby-p160-p174.xdelta 152538 bytes (約148KB)
これはスゴいよ!確かにbsdiffで作った差分はxdeltaによる差分の15%程でしかない。念のため、復元をして、md5をチェックしてみる。
$ bspatch ruby-p160 ruby-p174_by_bsdiff ruby-p160-p174.bsdiff
$ xdelta patch ruby-p160-p174.xdelta ruby-p160 ruby-p174_by_xdelta
$ md5sum ruby-p174 ruby-p174_by_bsdiff ruby-p174_by_xdelta
41c7edda80df89b7ca3db108b65b255c ruby-p174
41c7edda80df89b7ca3db108b65b255c ruby-p174_by_bsdiff
41c7edda80df89b7ca3db108b65b255c ruby-p174_by_xdelta
と、ちゃんと差分からruby-p174を復元できる。
$ xdelta patch ruby-p160-p174.xdelta ruby-p160 ruby-p174_by_xdelta
$ md5sum ruby-p174 ruby-p174_by_bsdiff ruby-p174_by_xdelta
41c7edda80df89b7ca3db108b65b255c ruby-p174
41c7edda80df89b7ca3db108b65b255c ruby-p174_by_bsdiff
41c7edda80df89b7ca3db108b65b255c ruby-p174_by_xdelta
しかし、このbsdiffの10倍の性能を誇るGoogleの技術、スゴすぎる。
スポンサーリンク
コメント







RSS