「パフォーマンスを気にするな。チューニングはプロファイラを使ってから」と言われて久しい。プログラムにもパレートの法則が適用され、チューニングするには全体の 20% を探さなければならない。
これは実際正しいし、未来のコンピュータの性能はさらに向上し、さらに重要性を増すだろう。しかしこれを過度に適用し、コーディングを行っている最中にパフォーマンスを全く無視してはいけない。
はるか昔。恐らくコンピュータが生まれる前の話だと推測するが、「GOTO 文論争」というものがあった。ソースコードを不必要に複雑にする GOTO 文を一切排除せよ、という主張がきっかけだ。
GOTO 文は確かにソースコードを複雑にするし、GOTO 文を一切使わなくてもプログラムを書くことが出来る。しかし GOTO 文を使わないことによって、余計に複雑になるロジックが存在するのが事実である。GOTO 文排除支持者は「GOTO 文はソースコードを複雑にするので排除する」を過度に適用し、余計に複雑になるソースコードを生み出す。
同様に「パフォーマンスチューニングはプロファイラを使ってから」支持者のうち、それを過度に適用する者は、あまりにもパフォーマンスを気にしなさ過ぎる。コーディングを行っている最中ならば、今書いているコードのパフォーマンスは気にしなければならない。塵も積もれば山となる。
今動いているプログラムのパフォーマンスが悪い時、手当たりしだいチューニングするのではなくプロファイラを使うのだ。
ところで、C# にも GOTO 文はあるのだが、使ったことはあるかい?