2010-09-30 11 views
62

Mise à jour importante: Voir la mise à jour 5 au fond il n'y a pas de problème de performance dans asp.net mvc 3, c'est une question de référenceASP.NET MVC 3 Performance Razor

J'ai fait un monde simple bonjour projet dans asp.net mvc2,3 aspx et 3 rasoir et les a comparés. Ce que je vois est:

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 

Quel est le problème avec le rasoir, c'est si lent?

Mise à jour: J'ai refait le test. Les 4 répertoires virtuels de test utilisent le même pool d'applications en mode intégré .net 4. Tous les projets sont terminés avec l'ajout d'un nouveau projet x vide et l'ajout d'une page avec un texte en ligne et sans code. tous les sites sont compilés en mode release. Mon système est Windows 7, 4 gb i7 4 cœurs. J'ai exécuté le test 2 fois pour échauffer iis et ce sont les résultats de la deuxième exécution. paramètres banc apache: ab -n100000 -c1000 résultats:

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% 

Mise à jour 2 Scott Guthrie a répondu dans son blog:

Nous n'avons pas encore totalement optimisé MVC3 (il y a généralement une beaucoup de tuning de cache nous faisons). Nous nous attendons à ce que rasoir soit la même performance que le moteur de vue .aspx avant qu'il ne soit finalement publié.

System   Requests per second CPU Utilization 
---------------------------------------------------- 
mvc 3 rc1 razor    1960    54% 
mvc 3 rc2 razor    2187    54% 
mvc 3 rc2 aspx    4014    58% 

Mise à jour 5 tous les tests effectués en mode de libération, mais le problème était debug="true" dans mon fichier web.config (que les effets aussi construit la libération), après le changement à faux, problème résolu. Et c'est intéressant de voir comment cela ne produit que des modèles de rasoir à cette échelle. Cela devrait être dans notre esprit sur les déploiements.

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

Merci à l'équipe asp.net mvc, excellent travail!

+10

Comment avez-vous effectué le test de performance? Votre site a-t-il été déployé sur IIS en mode Release? Avez-vous utilisé le [''](http://www.aspdotnetfaq.com/Faq/What-does-deployment-retail-true-attribute-in-machine-config-file- section means.aspx) dans votre machine.config? Souvenez-vous également qu'ASP.NET MVC 3 est encore en cours de développement et que vous ne pouvez pas vous attendre à ce qu'il soit entièrement optimisé. Au moins attendez jusqu'à ce qu'il frappe RTM. –

+0

+1 Darin - ne peut pas s'attendre à ce qu'un produit en phase alpha/bêta soit entièrement optimisé. – Oded

+0

C'est une réponse parfaitement appropriée, pourquoi le soumettriez-vous comme un commentaire? – Slavo

Répondre

25

(nouvelle réponse à répondre à vos numéros RC2)

Merci pour les chiffres mis à jour. Quelques points:

  1. Vos numéros ASPX bien paraître, dans le sens que nous nous attendons à MVC3 Aspx être à égalité avec MVC2 Aspx (un peu plus lent dans un tel exemple Bonjour tout le monde devrait)
  2. Vos numéros de rasoir paraître suspect. Nous savons que Razor est un peu plus lent que l'équivalent Aspx, cependant, la différence ne doit pas être supérieure à 5% -7%. Vos chiffres indiquent 50% plus lent, ce qui ne correspond tout simplement pas à nos résultats. Vérifiez si le projet compile dans Release et si vous avez debug="false" dans web.config.
  3. Votre utilisation de l'UC est un peu suspecte. Avec 1000 requêtes simultanées, le CPU doit être utilisé à 100%. (Même si seulement 8 demandes simultanées devraient suffire puisque vous avez 8 cœurs virtuels)
  4. Vos tests sont en cours d'exécution pendant environ 20-25 secondes.C'est un peu bas parce qu'une courte période d'activité (1 à 2 secondes) ailleurs dans le système pourrait considérablement nuire à vos résultats.
  5. Relativement au point 4, avez-vous exécuté chaque scénario une ou plusieurs fois? Voyez-vous beaucoup de variance dans les résultats? Puisque votre système d'exploitation fait d'autres choses en arrière-plan, il est typique de voir des résultats différents entre les exécutions.
+0

merci beaucoup Marcind, # 2 a résolu le problème, j'ai compilé en mode de libération dans tous les tests, mais n'a pas mis au point = true dans web.config. Le définir faux résout le problème. Je suis en train de mettre à jour ma question à ce sujet et de poster un commentaire sur le blog de haacked. RPC dans le rasoir est 3940 après cette chage. – sirmak

+3

Pas de problème. Vous devez faire attention en mesurant perf. – marcind

19

Comment avez-vous effectué le test de performance? Votre site a-t-il été déployé sur IIS en mode Release? Avez-vous utilisé la section <deployment retail="true" /> dans votre machine.config? Souvenez-vous également qu'ASP.NET MVC 3 est encore en cours de développement et que vous ne pouvez pas vous attendre à ce qu'il soit entièrement optimisé. Au moins attendez jusqu'à ce qu'il frappe RTM.

+0

oui en mode de libération sur iis 7.5. J'ai testé avec ab (benchmark Apache) et j'ai exécuté 50.000 requêtes avec 500 - 1000 clients. Je l'ai testé deux fois et ces chiffres sont les deuxièmes résultats (les premiers sont plus bas). Je sais que c'est en cours de développement mais je ne suis pas sûr que le gain de performance de 3x est possible après l'optimisation. – sirmak

+0

Pourquoi êtes-vous sûr que l'optimisation 3x n'est pas possible? L'équipe ASP.NET a déjà déclaré que l'analyseur Razor n'est pas encore optimisé. –

+0

Beta 1 libéré et razor rps a chuté à 1550. – sirmak