DevPartner Profiler Community Editionは性能分析に大いに役立った

結果

C#C++Delphiが混在するとあるプログラムがあったのですが、それの性能分析および性能改善に大いに役立ちました。CPU負荷が常に100%前後だったプログラムを、80%前後に落とすことが出来ました。

Dev Partner Profiler Community Editionで分かること

  • メソッドが全体の処理の何%を占めているのか
  • メソッドが何回呼び出されているか
  • メソッドの中の特定の行がメソッドの何%を占めているか
  • メソッドの中の特定の行が何回呼び出されているか

ということを調べることが出来るため、ボトルネックを予測ではなく、特定することが出来ます。性能改善において、ボトルネックの特定はプログラムのチューニングよりも優先度が高い重要な作業です*1*2ボトルネックさえ分かれば、自分で調べたり、質問掲示板で質問したり出来ます*3

いろいろ言い方を変えてみます。

  • 分析対象となるプログラムの最適化の甘さを数値化によって的確に指摘してくれます。
  • 分析対象となるプログラムに携わったプログラマの最適化の駄目さを数値化によって的確に指摘してくれます。

他人が書いたプログラムを分析するときも、自分のプログラムを分析するのと同じようにボトルネックを特定できますね。

Borland製品にIDE的に対応していないことをのぞけば、すばらしいです。

分析によってわかったこと

細かいところはもっとありましたが、省きます。

きっかけ

プログラマのダイエット・エピソード2

  • 鉄則1. 計測ツールを使え
  • 鉄則2. やたらに直すな(主要因を見極めてから直せ)

*1:ボトルネックを特定しないまま「このへんだろう」という予測でチューニングを施し、それが外れていた場合大きなタイムロスとなる

*2:しかも、チューニングはプログラマの腕の見せ所のため、すごくガッカリする。

*3:「本当にそこがボトルネックなのか?」という論争も避けられるかもしれません。