ASP.NET MVC 3 Razor Performance
-
26-09-2019 - |
Pergunta
ATUALIZAÇÃO IMPORTANTE: Consulte Atualização 5 Na parte inferior Não há problema de desempenho no ASP.NET MVC 3, este é um problema de referência
Fiz um simples projeto Hello World no ASP.NET MVC2,3 ASPX e 3 Razor e os comparei. O que vejo é:
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
O que há de errado com Razor, é tão lento?
Atualizar:Eu refiro o teste. Todos os 4 diretórios virtuais de teste usam o mesmo pool de aplicativos de modo integrado .NET 4. Todos os projetos são feitos com o novo projeto X Empty X e adicionando 1 página com 1 texto de linha e sem código. Todos os sites são compilados no modo de liberação. Meu sistema é Windows 7, 4 GB I7 4 núcleos. Eu executei o teste 2 vezes para aquecer o IIS e esses são resultados de segunda execução. Parâmetros do banco Apache: 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%
Atualização 2 Scott Guthrie respondeu em seu blog:
Ainda não otimizamos o MVC3 totalmente otimizado (geralmente há muito ajuste de cache que fazemos). Esperamos que o Razor seja o mesmo desempenho que o .aspx View Engine antes de finalmente ser lançado.
System Requests per second CPU Utilization
----------------------------------------------------
mvc 3 rc1 razor 1960 54%
mvc 3 rc2 razor 2187 54%
mvc 3 rc2 aspx 4014 58%
Atualização 5 Todos os testes feitos no modo de liberação, mas o problema foi debug="true"
No meu arquivo web.config (que também afeta as compilações de liberação), depois de alterá -lo para false, emitir corrigido. E é interessante como está efetuando apenas modelos de barbear nessa escala. Isso deve estar em nossa mente nas implantações.
System Requests per second CPU Utilization
----------------------------------------------------
mvc 3 rc2 razor 3940 58%
mvc 3 rc2 aspx 4100 58%
Graças à equipe do ASP.NET MVC, excelente trabalho!
Solução
(nova resposta para responder aos seus números RC2)
Obrigado pelos números atualizados. Alguns pontos:
- Seus números ASPX parecem bons, no sentido de que esperamos que o MVC3 ASPX esteja em pé de igual
- Seus números de barbear parecem suspeitos. Sabemos que Razor é um pouco mais lento que o ASPX equivalente, no entanto, a diferença não deve ser maior que 5%a 7%. Seus números indicam 50% mais lentos, o que simplesmente não corresponde aos nossos resultados. Verifique se o projeto compila no lançamento e você tem
debug="false"
definido em web.config. - Sua utilização da CPU é um pouco suspeita. Com 1000 solicitações simultâneas, a CPU deve ser utilizada 100%. (Mesmo apenas 8 solicitações simultâneas devem ser suficientes, pois você tem 8 núcleos virtuais)
- Seus testes estão em execução por cerca de 20 a 25 segundos. Isso é um pouco baixo, porque uma explosão curta (1-2 segundos) em outras partes do sistema pode desistir de seus resultados significativamente.
- Relacionado ao ponto 4, você executou cada cenário uma vez ou algumas vezes? Você está vendo muita variação nos resultados? Como seu sistema operacional está fazendo outras coisas em segundo plano, é típico ver diferentes resultados entre as execuções.
Outras dicas
Como você realizou a referência? Seu site foi implantado no IIS no modo de lançamento do modo? Você usou o <deployment retail="true" />
seção em sua máquina.config? Lembre -se também de que o ASP.NET MVC 3 ainda está sob desenvolvimento pesado, portanto você não pode esperar que ele seja totalmente otimizado ainda. Pelo menos espere até que ele atinja RTM.