ASP.NET MVC 3 Razor Leistung
-
26-09-2019 - |
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!
Lösung
(neue Antwort zu reagieren auf Ihre RC2 Zahlen)
Vielen Dank für die aktualisierten Zahlen. Ein paar Punkte:
- 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) erwarten
- 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. - 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)
- 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.
- 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.