やっと遅い原因が分かった…

遅い遅いデータ投入プログラム。かれこれ1週間も悩んだ結果、やっと分かった。やっぱり測定は大事だね。怪しい場所にタイマーをぶち込んで計測した結果ついに遅い場所の特定に成功した。(最初からやれよ。)自分で勝手に「この辺遅そう。」と思っていたところではなかったのね。だから、その辺をいくら対策しても速くならないわけだわ。文字列の中から不要な部分文字列を取り除くみたいな処理を作ったのだが、「不要な部分文字列」の種類がだんだんと増え、ついには20種類くらいになってたのね。これをいちいち文字列を走査して探していた。しかも、文字数をインデックスとするループの中で改めて文字列走査関数使って不要文字列を探している。そりゃ遅いわ。で、該当部分をregular expression使ってマッチさせる処理に変更。これで晴れて爆速。もともと、最悪の場合12時間くらいかかっていた処理を、2時間くらいに短縮させたのだが、その辺りにこだわっていたのが敗因。今回の改良により5分を切るくらいまで速くなった。チューニングって大事だねぇ。