0

ASP.NETアプリケーションに対してVisualStudio2008プロファイラーを実行し、次の結果セットを作成しました。

CURRENT FUNCTION                                      TIME (msec)
---------------------------------------------------|--------------
Data.GetItem(params)                               |   10,158.12
---------------------------------------------------|--------------

Functions that were called by Data.GetItem(params)    TIME (msec)
---------------------------------------------------|--------------
Model.GetSubItem(params)                           |     0.83
Model.GetSubItem2(params)                          |     0.77
Model.GetSubItem3(params)                          |     0.76
etc.

私が直面している問題は、Data.GetItem(params)によって呼び出された関数の合計が合計10,158.12ミリ秒にならないことです。これは、時間の大部分が実際にそのメソッド内のコードの実行に費やされていると私に信じさせるでしょう。

私の質問は...VisualStudioはメソッド自体を分析する方法を提供しているので、コードのどのセクションに最も時間がかかっているかを確認できますか?これを行うための推奨ツールがない場合はどうなりますか?または、独自のタイミングスクリプトを書き始める必要がありますか?

ありがとうございました

4

3 に答える 3

1

VS 2008プロファイラーはブロックレベルのプロファイリングをサポートしていませんが、RedGateプロファイラーはサポートしていると思います。

于 2010-03-02T00:08:28.963 に答える
0

コードのタイミングに集中しないでください。それがトップダウンのアプローチです。

ボトムアップの方がはるかに効果的です。 この方法は、VisualStudioでは問題なく機能します。

于 2010-03-04T13:07:45.663 に答える
0

もう1つのアプローチは、GetItemメソッドをいくつかの小さなメソッドに分割して(おそらくバイナリチョップを実行して)、時間を費やしている場所を絞り込むことです。おそらく、いくつかのタイミングスクリプトを書くよりも簡単です。

于 2010-06-10T20:57:02.453 に答える