1

私は通常約2-4%のCPUであるwinformsアプリケーションを持っています。限られた回数で、CPUの27%までのスパイクが見られます。このスパイクを実際に引き起こしているものを特定するための最良のプロファイリングツールは何ですか。dottraceを使用していますが、それをCPUスパイクに正確にマッピングする方法がわかりませんか?

ヘルプに感謝します

4

6 に答える 6

2

以前、RedGate の ANTS プロファイラーと、Visual Studio Team System にある組み込みプロファイラーの 2 つのプロファイリング ツールを使用しました。

RedGate ( http://www.red-gate.com/products/ants_profiler/index.htm )のプロファイラーを使用してからしばらく経ちましたが、Visual Studio 2008 に組み込まれているものをかなり最近使用しました。

そうは言っても、RedGate製品はより直感的に使用できると感じました. RedGate 製品を使用していたときにイライラしたことの 1 つは、特定の時点から始まるコードのみをプロファイリングするようにプロファイラーに指示できなかったことです。かなりの量のコードが処理されるまで到達できないパフォーマンス ヒットがありました。すでに実行されているため、結果が汚染されています。それ以来、彼らはその機能を追加した可能性があります。

Visual Studio の組み込みバージョンは、製品の非常にハイエンドなバージョンでのみ利用できます。私が間違っている場合は誰かが私を修正してくれますが、「Professional」バージョンでさえプロファイラーを持っていないと思います。現在、コード分析ツールを備えたTeam System Developer Edition を使用しています。

ただし、VS バージョンが行うことの 1 つは、プロファイリングを一時停止し、プロファイリングを一時停止した状態でアプリを開始できるようにすることです。これにより、非常に特定のパフォーマンスに集中することができます。これは、分析結果を理解しようとするときに非常に役立ちます。

編集: どちらのツールも、メモリ使用量、特定のメソッドが呼び出された回数、および各メソッドで費やされた時間を表示します。彼らがしないことは、私の知る限りでは、任意の時点での CPU 使用率を表示することです。ただし、CPU 使用率と特定のコード ブロックで費やされる時間との間には強い相関関係がある可能性があります。

APP で特定のアクションを呼び出すことにより、CPU スパイクを一貫して複製できる場合は、VS プロファイラーを手に入れ、プロファイリングを一時停止してアプリを開始し、実行する直前にプロファイリングを有効にします。スパイクし、それらの結果を調べます。

もちろん、これは、スパイクを再現するための何らかの決定論的動作があることを前提としています。そうでない場合は、スレッド化されたプロセスまたはガベージ コレクションをパフォーマンス ヒットの候補と見なす可能性があります。

于 2008-09-19T19:47:56.480 に答える
0

私は Compuware http://www.compuware.com/の DevPartner が優れたプロファイリング ツールであることを発見しました。残念ながら、現時点では VS 2008 をサポートしていないようです。

于 2008-09-26T04:40:41.000 に答える
0

スパイクを表示し、ドリルダウンして原因を確認できる最適なツールは、Xperf/Xperfview ツールです。

http://msdn.microsoft.com/en-us/performance/cc825801.aspxをチェックして ください

および http://msdn.microsoft.com/en-us/library/cc305221.aspx

これらのツールは ETW テクノロジ ( Event Tracing For Windows ) に基づいており、プロセスとシステム全体で何が起こっているかを非常に正確に把握できます。

これらのツールを使用すると、事後分析用のトレースをキャプチャしたり、機能をアタッチ/デタッチしたりすることもできます。お役に立てれば。

于 2009-06-05T01:10:40.857 に答える
0

アプリがシングル スレッドの場合、最適なプロファイリング ツールは IDE です。

追加: 明らかかもしれませんが、CPU 使用率の割合はあまり明確な概念ではありません。プログラムがまったく実行されているときは、100% です。そうでないときは 0% です。したがって、部分的なパーセントは、時間の経過に伴うある種の平滑化積分に基づいている必要があります。ただし、それが何であれ、スパイクが見られます。一部のプロファイラーでは、このようなスパイクに焦点を合わせて、その間隔だけを分析できます。

于 2008-11-04T23:26:29.463 に答える
0

また、このスパイクは実際に気になりますか? また、これはどのようなハードウェアで見られますか? クアッドコア CPU での 27% への急上昇は心配の種かもしれませんが、800Mhz P3 ではそうではありません。

スパイクはどのくらい持続しますか?@Mattには、ガベージ コレクションに問題がある可能性があるという優れた点があります。または、ディスクにスワップする可能性があります。

システム全体のパフォーマンスに長い間影響を与えていますか、それとも数秒だけですか?

これに対する解決策を見つけることが重要ではないということではありませんが、それはどれほど重要なのでしょうか?

于 2008-10-01T16:17:41.477 に答える
0

また、Sysinternal Process Explorer と Perfmon を使用して、アプリケーションについて多くのことを知ることができます (スパイクが GC で発生する場合と同様)。

于 2008-10-10T15:08:30.180 に答える