ASP.NET MVC 3 Razor のパフォーマンス
-
26-09-2019 - |
質問
重要なアップデート:下部の更新 5 を参照してください。asp.net mvc 3 にはパフォーマンスの問題はありません。これはベンチマークの問題です。
asp.net mvc2、3 aspx、および 3 razor で簡単な hello world プロジェクトを作成し、ベンチマークを実行しました。私が見ているのは次のとおりです。
System Requests per second
-------------------------------------------
asp.net mvc 2 ASPX 4200
asp.net mvc 3 Beta 1 ASPX 3200
asp.net mvc 3 Beta 1 Razor 1700
カミソリの何が問題なの、そんなに遅いの?
アップデート:テストをやり直しました。4 つのテスト仮想ディレクトリはすべて、同じ .net 4 統合モード アプリ プールを使用します。すべてのプロジェクトは、新しい空の x プロジェクトを追加し、コードなしで 1 行のテキストを含む 1 ページを追加することで完了します。すべてのサイトはリリース モードでコンパイルされます。私のシステムはWindows 7、4 GB i7 4コアです。IIS をウォームアップするためにテストを 2 回実行しました。これらは 2 回目の実行結果です。Apacheベンチパラメータ:AB -N100000 -C1000結果:
System Requests per second CPU Utilization
----------------------------------------------------
asp.net 4 4780 43%
mcv 2 4322 58%
mvc 3 beta 1 aspx 2324 54%
mvc 3 beta 1 razor 1615 54%
アップデート 2 スコット・ガスリーは自身のブログで次のように答えている。
MVC3 はまだ完全には最適化されていません (通常、キャッシュのチューニングは頻繁に行われます)。最終的にリリースされるまで、Razor は .aspx ビュー エンジンと同じパフォーマンスになると予想されます。
System Requests per second CPU Utilization
----------------------------------------------------
mvc 3 rc1 razor 1960 54%
mvc 3 rc2 razor 2187 54%
mvc 3 rc2 aspx 4014 58%
アップデート5 すべてのテストはリリースモードで行われましたが、問題は debug="true"
私の web.config ファイル (リリース ビルドにも影響します) を false に変更すると、問題が修正されました。そして、この規模でかみそりのテンプレートのみにどのように影響するかは興味深いです。導入時にはこれを念頭に置く必要があります。
System Requests per second CPU Utilization
----------------------------------------------------
mvc 3 rc2 razor 3940 58%
mvc 3 rc2 aspx 4100 58%
asp.net mvc チームに感謝します。素晴らしい仕事です。
解決
(RC2 番号に応答するための新しい回答)
最新の数値をありがとうございます。いくつかのポイント:
- MVC3 Aspx が MVC2 Aspx と同等であることが期待されるという意味で、Aspx 数値は良好に見えます (このような Hello World の例では少し遅くなることが予想されます)
- Razor の数値が疑わしいようです。Razor は同等の Aspx よりも少し遅いことがわかっていますが、その差は 5% ~ 7% を超えてはなりません。数字は 50% 遅いことを示していますが、これは単に私たちの結果と一致しません。プロジェクトがリリースでコンパイルされているかどうかを確認してください。
debug="false"
web.configで設定します。 - CPU 使用率が少し疑わしいです。同時リクエストが 1000 件の場合、CPU は 100% 使用されるはずです。(仮想コアが 8 つあるため、同時リクエストが 8 つだけでも十分です)
- テストは約 20 ~ 25 秒間実行されます。システム内の他の場所でアクティビティが短期間 (1 ~ 2 秒) バーストすると、結果が大幅に狂う可能性があるため、この値は少し低いほうです。
- ポイント 4 に関連しますが、各シナリオを 1 回または数回実行しましたか?結果に大きな差異が見られますか?OS はバックグラウンドで他のことを実行しているため、実行ごとに異なる結果が表示されるのが一般的です。
他のヒント
ベンチマークはどのように実行しましたか?サイトはリリース モードで IIS にデプロイされましたか?を使用しましたか <deployment retail="true" />
machine.config のセクション?また、ASP.NET MVC 3 はまだ開発中であるため、完全に最適化されることは期待できないことにも注意してください。少なくともRTMに達するまで待ちます。