2010-09-30 26 views
62

Actualización importante: ver Boletín 5 en la parte inferior que no hay problema de rendimiento en asp.net mvc 3, este es un tema de referenciaASP.NET MVC 3 Razor el rendimiento

He hecho un mundo simple hola proyecto en asp.net mvc2,3 aspx y 3 razor y los comparó. Lo que veo es:

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 

¿Qué pasa con la navaja de afeitar, es tan lenta?

Actualización: He vuelto a hacer la prueba. Los 4 directorios virtuales de prueba usan el mismo grupo de aplicaciones de modo integrado .net 4. Todos los proyectos se realizan con agregar nuevo proyecto x vacío y agregar 1 página con 1 línea de texto y sin código. todos los sitios están compilados en modo de lanzamiento. Mi sistema es Windows 7, 4 gb i7 4 núcleos. He corrido la prueba 2 veces para calentar iis y estos son resultados de segunda ejecución. Apache parámetros de banco: ab -n100000 -c1000 resultados:

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% 

Actualización 2 Scott Guthrie respondió en su blog:

No hemos optimizado totalmente MVC3 todavía (por lo general hay una mucha afinación de caché que hacemos). Esperamos que la afeitadora tenga el mismo rendimiento que el motor de vista .aspx antes de que finalmente se lance.

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 todas las pruebas que se realizan en modo de lanzamiento, pero el problema era debug="true" en mi archivo web.config (que también la comunicación a efectos construye), después de un cambio en false, ha solucionado el problema. Y es interesante cómo está afectando solo las plantillas de afeitar a esta escala. Esto debería estar en nuestra mente en las implementaciones.

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

Gracias al equipo de asp.net mvc, ¡excelente trabajo!

+10

¿Cómo se realizó el punto de referencia? ¿Tu sitio se implementó en IIS en modo de lanzamiento? ¿Usó el [''](http://www.aspdotnetfaq.com/Faq/What-does-deployment-retail-true-attribute-in-machine-config-file- sección means.aspx) en su machine.config? También recuerde que ASP.NET MVC 3 aún está en desarrollo, por lo que no puede esperar que esté completamente optimizado todavía. Al menos espera hasta que llegue a RTM. –

+0

+1 Darin: no se puede esperar que un producto en las etapas alfa/beta esté completamente optimizado. – Oded

+0

Esa es una respuesta perfectamente adecuada, ¿por qué la enviarías como comentario? – Slavo

Respuesta

25

(nueva respuesta para responder a sus números RC2)

Gracias por las cifras actualizadas. Unos pocos puntos:

  1. Sus números Aspx se ven bien, en el sentido que esperamos MVC3 Aspx estar a la par con MVC2 Aspx (un poco se espera más lento en un ejemplo tan Hello World)
  2. Sus números de la maquinilla de afeitar mira sospechoso Sabemos que Razor es un poco más lento que el Aspx equivalente, sin embargo, la diferencia no debe ser mayor al 5% -7%. Sus números indican un 50% más lento, lo que simplemente no coincide con nuestros resultados. Compruebe si el proyecto se compila en Release y tiene debug="false" establecido en web.config.
  3. Su utilización de CPU es un poco sospechoso. Con 1000 solicitudes simultáneas, la CPU debe ser utilizada al 100%. (Incluso solo 8 solicitudes simultáneas deberían ser suficientes ya que tiene 8 núcleos virtuales)
  4. Sus pruebas se ejecutan durante aproximadamente 20-25 segundos.Eso es un poco malo porque una ráfaga de actividad corta (1-2 segundos) en otro lugar del sistema podría arrojar los resultados de manera bastante significativa.
  5. Relacionado con el punto 4, ¿ejecutó cada escenario una o varias veces? ¿Ves mucha variación en los resultados? Dado que su sistema operativo está haciendo otras cosas en segundo plano, es típico ver resultados diferentes entre ejecuciones.
+0

muchas gracias Marcind, # 2 resolvió el problema, he compilado en modo de lanzamiento en todas las pruebas pero no configuré la depuración = verdadero en web.config. Establecerlo como falso resolvió el problema. Estoy actualizando mi pregunta sobre esto y también publico un comentario en el blog de haacked. rpc en navaja es 3940 después de ese chage. – sirmak

+3

No hay problema. Tienes que tener cuidado al medir perf. – marcind

19

¿Cómo se realizó el punto de referencia? ¿Tu sitio se implementó en IIS en modo de lanzamiento? ¿Utilizaste la sección <deployment retail="true" /> en tu máquina.config? También recuerde que ASP.NET MVC 3 aún está en desarrollo, por lo que no puede esperar que esté completamente optimizado todavía. Al menos espera hasta que llegue a RTM.

+0

sí en modo de lanzamiento en iis 7.5. He probado con ab (punto de referencia de Apache) y ejecuto 50,000 solicitudes con 500 - 1000 clientes. Lo he probado dos veces y estos números son los segundos resultados (los primeros son más bajos). Sé que está en desarrollo, pero no estoy seguro de que sea posible una ganancia de rendimiento 3x después de la optimización. – sirmak

+0

¿Por qué está seguro de que la optimización 3x no es posible? El equipo de ASP.NET ya ha declarado que el analizador Razor aún no está optimizado. –

+0

Beta 1 liberado y razor rps cayó a 1550. – sirmak