高速化

先日の合同研でも「いま作っているツールの処理速度が遅い」ということを何人かに言って、ryu-i さんから「Perl で遅い部分を C++ で書き直そうか」という話もあったのだが、きちんとどこが遅いのかを見てみたら、各名詞ごとにそれが事態を表すかそうでないか判定していて、その処理に毎回2秒くらいかかっているので、名詞が大量に含まれる文だと(名詞数に比例するだけだとはいえ)けっこう時間がかかっていた。

考えてみるとこの処理って別に毎回1個ずつ計算する必要はなくて、最初に1回だけ計算してあとはキャッシュしておけばいい話なので、そういうふうに直したらだいぶ速くなった。

昨日の yuusaku-t くんの発表練習では Web ベースの検索ツールを作るという話をしていて、高速化が課題、ということを言っていたが、そもそもどれくらい遅くて(使い方によっては処理に数時間かかってもいいかもしれないし、逆に使い方によっては数秒でも待たされていると感じる)、どこがボトルネックになっていて、それはどうすれば解決できるのか、といったことの見当がついていないと、ただ高速化と言ってもあまり意味がないのではないか。自分たちも今回はツールのデモができるよう Web ベースで作ってみたら遅くてストレスを感じるといった展開で、研究として動かしていた段階では速度なんて気にしなかったしなあ。