1

維持する必要のある他の誰かによって作成されたWebサイト(ASP.Net 2.0)を継承しました。
コードはひどいものではありませんが、ウェブサイトの実行を信じられないほど遅くする多くのことがあります。

私はこれを監視する考えを持っており、より経験豊富な開発者がそれについてどう思っているかを見たいと思っています。

今の私の目的は、ページの読み込みに時間がかかりすぎる時間を見つけて、それらの場所に注意を向けることです。

Global.asaxでPreRequestHandlerExecuteイベントとPostRequestHandlerExecuteイベントをフックし、「Pre」でストップウォッチを作成し、それをHttpContext.Itemsにアタッチして、「Post」で読み取ることを考えています。 100ms、それは私に知らせるために私に報告します。

そのためのいくつかの「擬似コード」は次のようになります。

protected void Application_PreRequestHandlerExecute(Object sender, EventArgs e) {
    System.Diagnostics.Stopwatch theTimer = new Stopwatch();
    theTimer.Start();
    HttpContext.Current.Items.Add("RequestTimer", theTimer);
}

protected void Application_PostRequestHandlerExecute(Object sender, EventArgs e) {
     Stopwatch theTimer = (Stopwatch) HttpContext.Current.Items["RequestTimer"];
     System.Diagnostics.Debug.WriteLine(theTimer.ElapsedMilliseconds + "@: " + HttpContext.Current.Request.RawUrl)
}

このアプローチについてどう思いますか?
これを行うのは合理的ですか?
それは私のウェブサイトをひざまずかせますか?
これを行うためのより良い方法はありますか?

いくつかの考え:
-DateTime.Now.Ticksを取得して保存する方がよい場合があります。これは、おそらくStopWatchよりも軽量になるでしょう。-
すべてのページを自分のページから継承する方がよいと思います。時間はありますが、数十ページを調べてすべてを変更したくありません。

どんな考えでも大歓迎です!ありがとう!

4

4 に答える 4

3

より良いアプローチは、トレースを有効にすることです。

于 2009-03-18T01:42:34.373 に答える
2

私はこれをしません。これは、それが価値があるよりも厄介になるでしょう。CLRProfilerやRedGateのANTSProfilerなど、ASP.NET用の優れたプロファイリングツールがいくつかあります。

于 2009-03-18T01:45:41.620 に答える
1

ストップウォッチをいじる代わりに、HttpContextコレクションに開始時刻をスローして、それを引き出します。次に、リクエストの最後に単純な減算を実行できますが、パフォーマンスへの影響はごくわずかです。

于 2009-03-18T01:43:43.857 に答える
1

BobbyShaftoe が指摘したように、プロファイリングが最善の策です。しかし、JetBrains の dotTrace も考慮してください。とても、とても良いです。

于 2009-03-18T02:03:52.123 に答える