犬猿の仲

コンパイラの時なんかはほとんどListをSetのごとく使って処理してしまっていたし、オーダーに気を付ければ特に速度的な問題が起こることもなかった。が、最近はもっぱらHashtblである。なんでもガーガーhashにつっこんでしまうのが楽ちんだ。Hashtblモジュールにはhash関数という、どんなオブジェクトからも自由にハッシュ値を計算してくれる('a -> int)な便利な関数があるわけで、ここまで来ると何も考える必要はない。
それはさておき、最近どうしても速度が速くなってくれない部分があって、どうしたものかどうしたものかと思い悩んでいた。どうもとことん調べてみると、単にHashtbl.findしているだけなのだ。これはいったい? 他にもたくさんfindしているところはあるのだが、どうしたことかある特定の一カ所だけ遅い。すると、ふとHashtblにlistをつっこむと遅いという噂を思い出す。まさにそこでhashにつっこんでいるのはlistであった。

ひょっとして、これが問題なのか? そこで、速度を調べることに。

続きを読む