FasterBMPWriting patch

DVDの字幕を作っているときには、各言語ごとに約500枚、12ヶ国語なので計約6000枚のビットマップをSqueakから出力する必要があった。当初Squeakに入っていたBMP出力のコードは相当に効率が悪くて、6000枚の字幕画像を生成して出力するのに1時間以上かかっていた。

そこで、最近お気に入りのトリックであるBitBltのhackBitsを使ったりして、「なるべくCのスピードで動くように」書き換えたところ、BMP出力の部分だけなら30倍から50倍くらい、字幕生成の全体を見ても10倍くらいは高速化されて、ちょっとした字幕の変更を何度も試したりする気になるくらいの速度にはなったわけである。

この高速化パッチをsqueak-devなどにも投げたわけだが、Alan Grimes某なる男に(実際彼が何を言いたかったのかは定かではないが)、「BMPファイルはファイルサイズが大きいのだからいまさら高速化するようなパッチを入れても意味がない」、というようなことを匂わされてしまった。別にシステムが早くなるのは何の問題もないと思うんだけどね。ただ、Ned Konzにも同様なことを書かれてしまったので、とたんに「おや、もしかして俺のほうが間違っていたかな」と思ってしまったりもする弱さもあるが。

その後GIFReadWriterやPNGReadWriterと速度比較をしたりしたが、それらと比べても優に一桁以上は速いので、Squeakに関して言えば、BMPを使う理由、というのはまだまだ大いにあるわけである。あ、ちなみにSqueakの独自形式である.form形式ならこのBMPよりもさらに一桁速いので、もう爆速である。Squeak以外では読めないという意味でもう誰にも追いつけないわけである。

結局Stephaneがメインストリームに取り込もうと言っているのでそのようになりそうではある。僕は別にBMPの肩を持つつもりもないが、オープンソースコミュニティにおけるパッチの扱いについて、またひとつ奇妙な経験をしてしまいました、という話であった。