プロファイラの理想と現実

2日にわたるパフォーマンスプロファイリングが終了しました。データを集めるのは簡単です(もちろん良いツールを使えば、という前提だけれど)。問題は、そのデータをどう解釈するか、です。実のところ、2日間の時間をかけたうち半分以上の時間はデータの意味を考える時間でした。
ホットスポットが見つかったとしても、最適化の余地が見つからないであるとか、そもそもサンプルコードの性質でホットスポットになってしまっている可能性もあります。「ホットスポット探索→修正」というフローは、実は「意味のあるホットスポット探索→修正」でないと文字通り意味が無いのです。そして、どこが意味のあるホットスポットなのかをプロファイラが教えてくれることは決してないのです。
目的は何なのか、現在の前提は何なのか、なんどもなんども原点に立ち返り、得られたデータと向き合うことで、次の方針を決める。チューニングって、意外と大変だなあと思いました。