DevPartner Profiler Community Editionは性能分析に大いに役立った
結果
C#とC++とDelphiが混在するとあるプログラムがあったのですが、それの性能分析および性能改善に大いに役立ちました。CPU負荷が常に100%前後だったプログラムを、80%前後に落とすことが出来ました。
Dev Partner Profiler Community Editionで分かること
- メソッドが全体の処理の何%を占めているのか
- メソッドが何回呼び出されているか
- メソッドの中の特定の行がメソッドの何%を占めているか
- メソッドの中の特定の行が何回呼び出されているか
ということを調べることが出来るため、ボトルネックを予測ではなく、特定することが出来ます。性能改善において、ボトルネックの特定はプログラムのチューニングよりも優先度が高い重要な作業です*1*2。ボトルネックさえ分かれば、自分で調べたり、質問掲示板で質問したり出来ます*3。
いろいろ言い方を変えてみます。
- 分析対象となるプログラムの最適化の甘さを数値化によって的確に指摘してくれます。
- 分析対象となるプログラムに携わったプログラマの最適化の駄目さを数値化によって的確に指摘してくれます。
他人が書いたプログラムを分析するときも、自分のプログラムを分析するのと同じようにボトルネックを特定できますね。
分析によってわかったこと
- ZLibで圧縮したバッファからの読み込み
- 小さいデータを何度も繰り返し読み込みをする場合、一括で読み込んだ方が速い
- 描画は基本的に遅い
- C#のメモリ割り当ては思っていたより速い
細かいところはもっとありましたが、省きます。