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