c# - raw - Rendimiento de ASP.NET MVC 3 Razor
razor c# (2)
¿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.
Actualización importante: consulte la actualización 5 en la parte inferior, no hay problemas de rendimiento en asp.net mvc 3, este es un problema de referencia
Hice un simple proyecto hola mundial 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 lento?
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. Parámetros de apache bench: 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:
Todavía no hemos optimizado completamente MVC3 (usualmente hay una gran cantidad de ajustes 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%
Actualice 5 todas las pruebas realizadas en modo de lanzamiento, pero el problema fue debug="true"
en mi archivo web.config (que también afecta a las compilaciones de versiones), después de cambiarlo a falso, se solucionó 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!
(nueva respuesta para responder a sus números RC2)
Gracias por los números actualizados. Algunos puntos:
- Sus números de Aspx se ven bien, en el sentido de que esperamos que MVC3 Aspx esté a la par con MVC2 Aspx (un poco más lento en un ejemplo de Hello World esperado)
- Sus números Razor parecen sospechosos. 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. - La utilización de tu CPU es un poco sospechosa. 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)
- 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.
- En relación 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.