Frage

Wichtige Update: Siehe Update 5 unten gibt es kein Performance-Problem ist in asp.net MVC 3, das ist eine Benchmark-Emission

Ich habe ein einfaches Hallo Welt Projekt in asp.net mvc2,3 aspx und 3 Rasierer gemacht und miteinander verglichen sie. Was ich sehe, ist:

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

Was mit rasiermesser falsch ist, ist es so langsam?

Update: Ich habe den Test nochmals gemacht. Alle vier Test virtuelle Verzeichnisse verwenden den gleichen .net 4 integrierten Modus app-Pool. Alle Projekte sind fertig mit Add neuem leeren x Projekt und das Hinzufügen von 1 Seite mit 1 Zeile Text und ohne Code. Alle Standorte sind im Release-Modus zusammengestellt. Mein System ist Windows 7, 4 gb i7 4 Kerne. Ich habe den Test 2 mal laufen iis aufwärmen und diese sind zweite Laufergebnisse. Apache Bank Parameter: ab -n100000 -c1000 Ergebnisse:

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%

Update 2 Scott Guthrie in seinem Blog antwortete:

  

Wir sind noch nicht vollständig optimiert MVC3 noch (es gibt in der Regel eine Menge von Cache-Tuning wir tun). Wir erwarten Rasiermesser die gleiche Leistung wie die ASPX-Ansicht-Engine, bevor es schließlich freigegeben wird.

System         Requests per second   CPU Utilization
----------------------------------------------------
mvc 3 rc1 razor               1960               54%
mvc 3 rc2 razor               2187               54%
mvc 3 rc2 aspx                4014               58%

Update 5 geführte Versuche im Release-Modus, aber das Problem war debug="true" in meiner Datei web.config (das auch Auswirkungen Release-Builds), nach dem Wechsel auf false, Problem behoben. Und es ist interessant, wie es in dieser Größenordnung nur Rasiermesser Templat bewirken. Dies sollte in unserem Geist auf Implementierungen sein.

System         Requests per second   CPU Utilization
----------------------------------------------------
mvc 3 rc2 razor               3940               58%
mvc 3 rc2 aspx                4100               58%

Dank asp.net MVC-Team, ausgezeichnete Arbeit!

War es hilfreich?

Lösung

(neue Antwort zu reagieren auf Ihre RC2 Zahlen)

Vielen Dank für die aktualisierten Zahlen. Ein paar Punkte:

  1. Ihre Aspx Zahlen gut aussehen, in dem Sinne, dass wir MVC3 Aspx sein gleichauf mit MVC2 Aspx (etwas langsamer in solchen Hallo Welt Beispiel wird erwartet)
  2. erwarten
  3. Ihre Razor Zahlen aussehen verdächtig. Wir wissen, Razor etwas langsamer als das Äquivalent Aspx ist, jedoch sollte die Differenz nicht größer als 5% -7%. Ihre Zahlen zeigen 50% langsamer, was einfach nicht mit unseren Ergebnissen übereinstimmen wird. Überprüfen Sie, ob das Projekt compiliert in Release und Sie haben debug="false" Satz in web.config.
  4. Ihre CPU-Auslastung ist ein bisschen suspekt. Mit 1000 gleichzeitigen Anforderungen sollte die CPU 100% utlized werden. (Sogar nur 8 gleichzeitige Anforderungen sollten genug sein, da Sie 8 virtuellen Kern)
  5. Ihre Tests laufen für etwa 20-25 Sekunden. Das ist ein bisschen auf der unteren Seite, weil eine kurze (1-2 Sekunden) Aktivitäts platzte an anderer Stelle im System, um Ihre Ergebnisse abwerfen könnte ganz erheblich.
  6. Bezug zu Punkt 4, haben Sie jedes Szenario laufen einmal oder mehrmals? Sind Sie viel Varianz in den Ergebnissen zu sehen? Da Ihr O andere Dinge im Hintergrund tut ist es typisch unterschiedliche Ergebnisse zwischen den Läufen zu sehen.

Andere Tipps

Wie haben führen Sie die Benchmark? Wurde Ihre Website auf IIS in Modus Veröffentlichung eingesetzt? Haben Sie verwenden, um die <deployment retail="true" /> Abschnitt in Ihrem machine.config? Denken Sie auch daran, dass ASP.NET MVC 3 noch in der Entwicklung ist, so kann man nicht erwarten es noch nicht vollständig optimiert werden. Mindestens warten, bis er trifft RTM.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top