Redgate の Ants Profiler は素晴らしいと聞いていますが、400 ドルもします。少なくともコードを最適化する必要がある場所を教えてくれる安価な代替手段はありますか?
4 に答える
Dottraceは Ants の約半分の価格で、非常に優れています。ReSharper と同じ人々によって作られています。
コードの 1 回限りの最適化を探しているだけの場合は、Ants を選択する必要があります。フル機能の 15 日間の無料試用版があり、多くの最適化を行うのに十分なはずです.
一般的に、私が使用する方法はこれです。
私は、コードのタイミングを計ることよりも、時間のかかる大きな不必要な部分を見つけて、それらを一掃してスピードアップを達成できるようにすることに関心があります。
それは本当に別のプロセスです。
追加: 私が詳しく説明できるとしたら、私が目にする典型的なパフォーマンスの問題は、何らかのアクティビティ (ほとんどの場合関数呼び出し) が 10%、50%、90% などの時間の一部を消費していることであり、実際には必要ではありません。 - 他のものに置き換えたり、まったく行わなかったりすることができ、その時間が節約されます。
例として、それが 50% であるとします。
たとえば、コール スタックのランダムな時間のサンプルを 10 取得します。そのコールは、それぞれのサンプルに 50% の確率で出現するため、サンプルの約半分になります。したがって、それは私の注意を引き、それが行っていることが本当に必要かどうかを確認し、そうでない場合は、スピードアップを得るために修正します.
さて、それは測定でしたか?もしそうなら、サンプルの数が少なかったので、それは本当に貧弱な測定でした. 10 個のサンプルのうち 5 個が呼び出しを示した場合、時間の割合はおそらく約 50% であり、ギブ オア テイクであり、間違いなく 10% を超えています。したがって、正確な割合はわからないかもしれませんが、修正する価値があることは間違いありませんし、問題の場所を正確に知っていることも間違いありません。
(補足: 呼び出しの数を数えたり、呼び出し時間を見積もったりしませんでした。むしろ、呼び出しのコストを見積もりました。これは、呼び出しを削除することで節約できるものであり、スタック上での滞留時間の一部です。また、私は関数レベルではなく、呼び出しレベルで作業しています. 対象の呼び出しの上下にある関数呼び出しを気にするかもしれませんが、それ以外は、排他時間、呼び出しグラフ、再帰などの関数レベルの問題です。一部ではありません。)
そのため、パフォーマンスの測定とパフォーマンスの問題の発見は、補完的かもしれませんが、実際には別のタスクであると言います。
VSProfiler は VS に同梱されており、非常にうまく機能します。メモリ関連の問題を検討している場合は、CLRProfiler が選択肢になります。