3

こんにちは、

私は何年も前からいくつかのC#コードを継承しました。非同期になるように少しリファクタリングしました。変更がCPUのパフォーマンスに与える影響を評価するために、Process Explorerを使用して、アプリの動作を大まかに監視しました。驚いたことに、ProcessExplorerがI/Oとして報告することを実行しているように見えます。一般に、これはディスクI/OまたはネットワークI/Oに関連しています。コードからわかることから、これら2つのI/Oソースのいずれかへの明示的な呼び出しを理解することはできません。

私の質問は、コードのどのセクションがI / Oを引き起こしているのかを特定するための最良の方法は何ですか?JetBrainsのdotTraceを使用してアプリケーションのプロファイルを作成しますが、私が知る限り、CPUとメモリのパフォーマンスのみを処理します。

ポインタを事前に感謝します。

よろしく、

エリック。

4

4 に答える 4

5

プロセスモニターがあなたの答えかもしれません。詳細については、次のStackOverflowの質問を参照してください。

ファイルI/Oをプロファイリングするにはどうすればよいですか?

その答えに基づいて、ProcessMonitorで一般的に読み取られるファイルまたは書き込まれるファイルのファイル名をソリューションで検索できる場合があります。

于 2010-11-03T21:43:46.743 に答える
2

ランダム一時停止とも呼ばれるスタックショットメソッドは、かなりの時間がかかる場合にそれを検出します。

于 2010-11-03T22:04:32.263 に答える
1

I / Oコードが管理されている場合は、.net Frameworkのシンボルをロードし、重要な関数(FileStreamコンストラクターなど)にブレークポイントを設定できます。

これには推測作業が含まれますが、成功した場合は有益な情報になる可能性があります。

于 2010-11-03T21:44:55.900 に答える
0

プロセスモニターに加えて、Win7のリソースモニター(Vistaでは「パフォーマンスと信頼性」でも利用可能)は、I/O関連の速度低下の診断に非常に役立ちます。ディスクビューに切り替えて、読み取り/書き込みまたは合計(win7のみ)で並べ替えます。また、表示されるファイルのリストにも注意してください。

于 2010-11-03T22:26:39.647 に答える