2010-09-30 29 views
62

Aggiornamento importante: Vedi aggiornamento 5 in fondo non v'è alcun problema di prestazioni in asp.net MVC 3, questo è un problema di riferimentoASP.NET MVC 3 Razor Performance

Ho fatto un semplice ciao mondo progetto in asp.net mvc2,3 aspx e 3 rasoio e benchmarked. 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'è che non va con il rasoio, è così lento?

Aggiornamento: Ho rifatto il test. Tutte e 4 le directory virtuali di test utilizzano lo stesso pool di app in modalità integrata .net 4. Tutti i progetti vengono completati aggiungendo un nuovo progetto x vuoto e aggiungendo 1 pagina con 1 riga di testo e senza codice. tutti i siti sono compilati in modalità di rilascio. Il mio sistema è Windows 7, 4 GB i7 4 core. Ho eseguito il test 2 volte per scaldare iis e questi sono risultati di second run. apache parametri panca: 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% 

Update 2 Scott Guthrie ha risposto nel suo blog:

Non abbiamo pienamente MVC3 ancora ottimizzato (di solito c'è un un sacco di tuning della cache che facciamo). Ci aspettiamo che il rasoio abbia le stesse prestazioni del motore di visualizzazione .aspx prima che venga finalmente rilasciato.

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 tutti i test eseguiti 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, problema risolto. Ed è interessante il modo in cui sta effettuando il rasoio solo su questa scala. Questo dovrebbe essere nella nostra mente sulle implementazioni.

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

Grazie alla squadra di asp.net mvc, lavoro eccellente!

+10

Come hai eseguito il punto di riferimento? Il tuo sito è stato distribuito su IIS in modalità Release? Hai usato [''](http://www.aspdotnetfaq.com/Faq/What-does-deployment-retail-true-attribute-in-machine-config-file- significa.aspx) nella tua macchina.config? Ricorda inoltre che ASP.NET MVC 3 è ancora in fase di sviluppo, quindi non puoi aspettarti che sia ancora completamente ottimizzato. Almeno aspetta fino a quando non tocca RTM. –

+0

+1 Darin - non può aspettarsi che un prodotto in fasi alfa/beta sia completamente ottimizzato. – Oded

+0

Questa è una risposta perfettamente adatta, perché la invieresti come commento? – Slavo

risposta

25

(nuova risposta per rispondere ai numeri RC2)

Grazie per i numeri aggiornati. Alcuni punti:

  1. I tuoi numeri aspx guardare bene, nel senso che ci aspettiamo MVC3 aspx per essere alla pari con MVC2 aspx (un po 'ci si aspetta più lento in un tale esempio Ciao Mondo)
  2. tuoi numeri Razor sembra sospetto. Sappiamo che Razor è un po 'più lento rispetto all'aspx equivalente, tuttavia la differenza non dovrebbe essere superiore al 5% -7%. I tuoi numeri indicano il 50% più lento, che semplicemente non corrisponde ai nostri risultati. Controlla se il progetto viene compilato in Release e hai debug="false" impostato in web.config.
  3. L'utilizzo della CPU è un po 'sospetto. Con 1000 richieste simultanee la CPU dovrebbe essere ottimizzata al 100%. (Anche solo 8 richieste simultanee dovrebbero essere sufficienti poiché hai 8 core virtuali)
  4. I test sono in esecuzione per circa 20-25 secondi.Questo è un po 'basso, perché una breve (1-2 secondi) esplosione di attività altrove nel sistema potrebbe tradursi in risultati abbastanza significativi.
  5. In relazione al punto 4, hai eseguito ogni scenario una o poche volte? Stai vedendo molta varianza nei risultati? Dato che il tuo sistema operativo sta facendo altre cose in background, è tipico vedere risultati diversi tra le esecuzioni.
+0

grazie mille Marcind, il n.2 ha risolto il problema, ho compilato la modalità di rilascio in tutti i test ma non ho impostato il debug = true in web.config. Impostandolo falso ha risolto il problema. Sto aggiornando la mia domanda su questo e anche postare un commento al blog di haacked. rpc nel rasoio è 3940 dopo quello chage. – sirmak

+3

Nessun problema. Devi stare attento quando misuri il perf. – marcind

19

Come ha funzionato il punto di riferimento? Il tuo sito è stato distribuito su IIS in modalità Release? Hai usato la sezione <deployment retail="true" /> nel tuo computer.config? Ricorda inoltre che ASP.NET MVC 3 è ancora in fase di sviluppo, quindi non puoi aspettarti che sia ancora completamente ottimizzato. Almeno aspetta fino a quando non tocca RTM.

+0

sì in modalità di rilascio su iis 7.5. Ho testato con ab (benchmark Apache) ed eseguito 50.000 richieste con 500 - 1000 client. L'ho provato due volte e questi numeri sono i secondi risultati (i primi sono più bassi). So che è in fase di sviluppo, ma non è sicuro che il guadagno di prestazioni 3x sia possibile dopo l'ottimizzazione. – sirmak

+0

Perché sei sicuro che l'ottimizzazione 3x non sia possibile? Il team di ASP.NET ha già dichiarato che il parser di Razor non è ancora ottimizzato. –

+0

Beta 1 rilasciato e razor rps caduto a 1550. – sirmak

Problemi correlati