web-dev-qa-db-fra.com

Performances du rasoir ASP.NET MVC 3

Mise à jour importante: voir la mise à jour 5 en bas, il n'y a pas de problème de performances dans asp.net mvc 3, c'est un problème de référence

J'ai fait un simple projet hello world dans asp.net mvc2,3 aspx et 3 razor et les ai comparés. Ce que je vois c'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?

pdate: 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 se font en ajoutant un nouveau projet x vide et en ajoutant 1 page avec 1 texte de ligne et sans code. tous les sites sont compilés en mode release. Mon système est Windows 7, 4 Go i7 4 cœurs. J'ai exécuté le test 2 fois pour me réchauffer et ce sont les résultats de la deuxième analyse. Paramètres du 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%

pdate 2 Scott Guthrie a répondu dans son blog:

Nous n'avons pas encore complètement optimisé MVC3 (il y a généralement beaucoup de réglages de cache que nous faisons). Nous nous attendons à ce que le rasoir ait les mêmes performances que le moteur de visualisation .aspx avant sa sortie finale.

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 release mais le problème était debug="true" dans mon fichier web.config (qui affecte également les builds des versions), après l'avoir changé en false, problème corrigé. Et il est intéressant de voir comment cela n'effectue 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!

64
sirmak

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

Merci pour les chiffres mis à jour. Quelques points:

  1. Vos numéros Aspx semblent bons, dans le sens où nous nous attendons à ce que MVC3 Aspx soit au même niveau que MVC2 Aspx (un peu plus lent dans un tel exemple Hello World est attendu)
  2. Vos numéros de rasoir semblent suspects. Nous savons que Razor est un peu plus lent que l'Aspx équivalent, cependant, la différence ne devrait 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 se compile dans Release et que vous avez debug="false" défini dans web.config.
  3. Votre utilisation du processeur est un peu suspecte. Avec 1000 requêtes simultanées, le processeur doit être utilisé à 100%. (Même seulement 8 demandes simultanées devraient suffire car vous avez 8 cœurs virtuels)
  4. Vos tests durent environ 20-25 secondes. C'est un peu faible, car une courte (1-2 secondes) explosion d'activité ailleurs dans le système pourrait perturber considérablement 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? Étant donné que 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.
26
marcind

Comment avez-vous réalisé l'indice de référence? Votre site a-t-il été déployé sur IIS en mode Release? Avez-vous utilisé le <deployment retail="true" /> section dans votre machine.config? N'oubliez pas non plus qu'ASP.NET MVC 3 est toujours en cours de développement, vous ne pouvez donc pas vous attendre à ce qu'il soit entièrement optimisé. Attendez au moins jusqu'à ce qu'il atteigne RTM.

19
Darin Dimitrov