64

重要な更新:下部の更新5を参照してください。asp.netmvc3にはパフォーマンスの問題はありません。これはベンチマークの問題です。

asp.net mvc2,3aspxと3razorで簡単なhelloworldプロジェクトを作成し、それらのベンチマークを行いました。私が見ているのは:

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つのテスト仮想ディレクトリはすべて、同じ.net4統合モードアプリプールを使用します。すべてのプロジェクトは、新しい空のxプロジェクトを追加し、1行のテキストとコードなしで1ページを追加することで完了します。すべてのサイトはリリースモードでコンパイルされます。私のシステムはWindows7、4 GBi74コアです。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はまだ完全には最適化されていません(通常、キャッシュの調整はたくさんあります)。最終的にリリースされる前は、かみそりは.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%

リリースモードで行われたすべてのテストを更新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チームに感謝します、素晴らしい仕事です!

4

2 に答える 2

26

(RC2番号に対応するための新しい回答)

更新された番号をありがとう。いくつかのポイント:

  1. Aspxの数値は、MVC3AspxがMVC2Aspxと同等であると予想されるという意味で、見栄えがします(このようなHello Worldの例では少し遅いと予想されます)
  2. あなたのかみそりの番号は疑わしいようです。Razorは同等のAspxよりも少し遅いことはわかっていますが、その差は5%〜7%を超えないようにする必要があります。あなたの数値は50%遅いことを示していますが、これは単に私たちの結果と一致していません。プロジェクトがリリースでコンパイルdebug="false"され、web.configで設定されているかどうかを確認します。
  3. CPU使用率は少し疑わしいです。1000の同時リクエストでは、CPUを100%使用する必要があります。(8つの仮想コアがあるため、8つの同時リクエストでも十分です)
  4. テストは約20〜25秒間実行されます。システムの他の場所での短い(1〜2秒)アクティビティのバーストにより、結果が大幅に失われる可能性があるため、これは少し低めです。
  5. ポイント4に関連して、各シナリオを1回実行しましたか、それとも数回実行しましたか?結果に大きなばらつきが見られますか?OSはバックグラウンドで他のことを実行しているため、実行ごとに異なる結果が表示されるのが一般的です。
于 2010-12-11T19:58:37.107 に答える
19

ベンチマークをどのように実行しましたか?サイトはIISにリリースモードで展開されましたか?machine.configのセクションを使用しました<deployment retail="true" />か?また、ASP.NET MVC 3はまだ開発が進んでいるため、完全に最適化されるとは期待できません。少なくともRTMに到達するまで待ちます。

于 2010-09-30T08:37:43.820 に答える