処理の高速化を考えてみる

客先に導入済みのシステムで、処理の負荷が異常に高くなるとのクレーム。現象を見てみると、なるほど、CPU使用率が100%になっている。これは使い物にならないかも。
早速ツールを使って、ボトルネックの洗い出し。問題なところをピックアップして、現状の実現方式をチームで見直してみる。無意味な検索*1を延々と繰り返していることが判明。いったい何を考えてこんな処理を作り込んだんだか。
クラス同士の責任もむちゃくちゃだったが、それにはとりあえず目をつぶっておくとして、暫定で修正してみた。テスト実行してみたが、期待したほど負荷は下がらなかった。10分の1くらいにはしたかったのに。
思いがけないところでCPUパワーを喰っていたりして、まだまだ根は深いのかもしれない。これだから他の人が考えたことのお守は嫌なんだ。

*1:しかも単純に順列検索!!