Diary?

2008-01-01
Tue

(03:10)

何かいろいろ論文読んだり実装してみたりしているうちに年が明けてた。くそぅ、バイナリ差分なんて考えるんじゃなかった。

まずはとりあえず大バカな実装だとどのぐらいの惨劇になるのか、 2M バイトぐらいの一文字だけ違うデータの OpenOffice ファイルの比較を次のようにやってみた。

  1. 二つのファイルを一定サイズずつ読み出す
  2. 読み出したブロックのリリスト同士の Longest Common Prefix を取る (os.path.commonprefix で一発)

それでどうなったかっていうと、 bsdiff で 355 バイト程度の差分になるデータに対して 90K バイトオーバーとなりました。しかもこれ、生のバイト列でのデータなので実際にはずっと大きなデータになるわけで、使いものになるか、こんなもの。第一、実際にはもっとデータの差異は大きいわけだからお話にならんよな。ってか bsdiff は何やってんだよ。

ちょっと調べてみた限り、 bsdiff は suffix array の応用で差分を作ってるようだ。それで今は IBM Hash Suffix Array Delta Compression を読んでるんだけど、これはちょっと目的に合わないかなあ。差分ファイルのデータフォーマットまで込みってのがネックだ。基本的な考え方は応用できるかもしれないけど。

(17:04)

ロッテリアで絶品チーズバーガーを食べてきた。

感想: やはりモスバーガーの壁は厚かった。

Creative Commons
この怪文書はクリエイティブ・コモンズ・ライセンスの元でライセンスされています。引用した文章など Kuwata Chikara に著作権のないものについては、それらの著作権保持者に帰属します。