prestazioni ASP.NET MVC 3 Razor
-
26-09-2019 - |
Domanda
Aggiornamento importante: See aggiornamento 5 in fondo non v'è alcun problema di prestazioni in asp.net MVC 3, questo è un problema di riferimento
Ho fatto un semplice progetto ciao mondo in asp.net mvc2,3 aspx e 3 rasoio e li benchmark. Quello che vedo è:
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
Cosa c'è di sbagliato con il rasoio, è così lenta?
Aggiornamento: Ho rifatto il test. Tutte le directory virtuali 4 test utilizza la stessa .net 4 modalità integrata pool di app. Tutti i progetti sono fatti con add nuovo progetto vuoto x e l'aggiunta di 1 pagina con 1 riga di testo e senza codice. tutti i siti vengono compilati nella modalità di rilascio. Il mio sistema è Windows 7, 4 gb i7 4 core. Ho eseguito il test 2 volte per riscaldare iis e questi sono i risultati secondo run. apache parametri banco: ab -n100000 -c1000 risultati:
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%
Aggiorna 2 Scott Guthrie ha risposto nel suo blog:
non abbiamo ancora completamente ottimizzato MVC3 (di solito c'è un sacco di cache di messa a punto che facciamo). Ci aspettiamo rasoio per essere le stesse prestazioni del motore di visualizzazione aspx prima di essere finalmente uscito.
System Requests per second CPU Utilization
----------------------------------------------------
mvc 3 rc1 razor 1960 54%
mvc 3 rc2 razor 2187 54%
mvc 3 rc2 aspx 4014 58%
Aggiorna 5 tutti i test effettuati in modalità di rilascio, ma, il problema era debug="true"
nel mio file web.config (che anche il rilascio effetti costruisce), dopo la modifica su false, Risolto il problema. Ed è interessante come è effettuare solo template rasoio a questa scala. Questo dovrebbe essere nella nostra mente sugli schieramenti.
System Requests per second CPU Utilization
----------------------------------------------------
mvc 3 rc2 razor 3940 58%
mvc 3 rc2 aspx 4100 58%
Grazie a asp.net mvc squadra, ottimo lavoro!
Soluzione
(nuova risposta per rispondere ai numeri RC2)
Grazie per i numeri aggiornati. A pochi punti:
- I tuoi numeri aspx guardare bene, nel senso che ci aspettiamo MVC3 aspx per essere alla pari con MVC2 aspx (un po 'più lento in un tale esempio Ciao Mondo è previsto)
- I tuoi numeri Rasoio aspetto sospetto. Sappiamo Razor è un po 'più lento del aspx equivalente, tuttavia, la differenza dovrebbe essere non più grande di 5% -7%. I suoi numeri indicano il 50% più lento, che semplicemente non corrisponde con i nostri risultati. Controllare se i compilazioni di progetto in uscita e si è impostato
debug="false"
nel web.config. - Il tuo utilizzo della CPU è un po 'sospetto. Con 1000 richieste simultanee la CPU dovrebbe essere utlized 100%. (Anche solo 8 richieste simultanee dovrebbe essere sufficiente dal momento che si dispone di 8 core virtuali)
- I tuoi test sono in esecuzione per circa 20-25 secondi. Questo è un po 'sul lato basso a causa di una breve (1-2 secondi) scoppio di attività in altre parti del sistema potrebbe buttare fuori i risultati in modo significativo.
- relativa al punto 4, avete fatto funzionare ogni scenario una o un paio di volte? Stai vedendo molto varianza nei risultati? Dal momento che il sistema operativo sta facendo altre cose in background è tipico per vedere risultati diversi tra piste.
Altri suggerimenti
Come hai eseguito il punto di riferimento? È stato il sito distribuita in IIS in modalità di rilascio? Hai usato il sezione <deployment retail="true" />
nel vostro machine.config? Ricorda inoltre che ASP.NET MVC 3 è ancora in fase di sviluppo, quindi non ci si può aspettare che sia ancora pienamente ottimizzato. Almeno attendere fino a quando non colpisce RTM.