2010-12-18 6 views
1

私はページのレンダリング速度を測定し、OnBeginRequestでStopWatchを起動し、OnResultExecutedで停止して、ページのレンダリングサイクル全体を測定しています。
1.1ミリOnBeginRequest - -
2ミリ秒OnActionExecuting -MVC.NETでの最大ページ描画速度はどのくらいですか?

0ミリ秒
3ミリ秒をOnActionExecuted - 3つの後者のタイムスタンプがである

OnResultExecuted: 私はレンダリング時に、次のタイムスタンプを取得しますコース固有のアプリケーション固有のものですが、アプリケーションがリクエストを受け取り、アクションメソッドが制御を取得してから1.1ミリ秒の間に何が起こるのだろうと思いますか?

この時間を短縮するにはどうすればよいですか? MVC.NETで最大のレンダリング速度(ページ/秒)はどのくらいでしたか?

答えて

1

ルートが解析され、コントローラが配置され、インスタンス化され、アクションメソッドが呼び出されます。リリースモードで実行していることを確認してください。

<compilation debug="false" /> 

測定結果がより現実的です。実際には、要求を受信して​​からコントローラー・アクションを呼び出すまでの時間がボトルネックになることはありません。それはあなたが減らすことに焦点を当てるべきコントローラアクションの内部に費やされた時間です。これは、アプリケーションが実際のパフォーマンスを向上させる可能性がある場所です。パフォーマンスを向上させるためのさまざまな手法があり、普及しているものはキャッシュを使用することです。 Guによると

今日のASP.NET MVC 3 RC2ビルド は、多くのバグ修正と パフォーマンスの最適化が含まれています。私たちの最新の パフォーマンステストは ASP.NET MVC 3は ASP.NET MVC 2よりも高速化されましたことを示し、その既存の ASP.NET MVCアプリケーションは 経験更新わずかなパフォーマンス 増加が ASP.NETを使用して実行しますページをレンダリングするために取らMVC 3

+0

それはポイントです - 私はコードのために1ミリ秒未満に総処理時間を減らすことができますが、ルートを解析し、コントローラのインスタンス化を行うには1ミリ秒が巨大なオーバーヘッドであることがわかります。私はこれがパラノイアのように少し聞こえることを知っていますが、私はこの厄介なミリ秒の肌の下にはいりたいです。 – Andy

+0

@Andyはい、これはパラノイアのように聞こえる、プログラミングでは早すぎる最適化と呼ばれています。 –

+0

ありがとう、私は次のステップで明確です。良い精神科医.. :) – Andy

1

時間は、秒あたりの要求の数とは異なっている直接(FPSに類似し、ゲーム開発see hereでフレームあたりの時間)の値を相関していません。特に、マルチスレッド環境では。

私のマシンでは、空のMVCアプリケーションは、デフォルトのコントローラとビューを0.8-1.1msでレンダリングします。もちろん、ルートの収集はほとんど空のため、おそらく多くの時間を節約します。いくつかの最適化があります。ネット上で簡単に見つけることができます。主なものの1つは、ビューエンジンをクリアし、使用しているビューエンジンを追加するだけで、毎回ハードドライブへのラウンドトリップを保存します要求。

ViewEngines.Clear(); 
ViewEngines.Engines.Add(new WebFormViewEngine())); 

実際のWebサイトでは、現実世界のMVCアプリケーションを取得して、毎秒2000リクエスト以上をレンダリングすることができました。あなたが試したいかもしれない1つのことは、MVCとIISが要求ごとに物理アセンブリファイルをヒットするので、Temp ASP.NetファイルとWebサイトフォルダをRAMドライブに配置することですが、現実的にはゲインが小さすぎて目立たない誰の価値がある価値がある。

source code hereページの生成時間は1ミリ秒です(これはビューの真ん中にあるので完全ではありませんが、それにもかかわらず)。そのサーバーはRAMドライブ上で動作しています。 ASP.Net TempファイルをRAMドライブに移動することで、速度を少し上げることができますが、何があっても0.8 ms以下には収まりませんでした。

関連する問題