Vitesse d'exécution du code: ASP. NET-MVC versus PHP

J'ai un argument amical avec un collègue à ce sujet, et mon opinion personnelle est qu'une application web compilée ASP.NET-MVC fonctionnerait plus efficacement/plus rapidement que le même projet qui serait écrit en PHP. Mon ami n'est pas d'accord.

, Malheureusement, je n'ai pas de données solides que je peux utiliser pour sauvegarder mon argument. (lui non plus)

Pour cela, j'ai essayé de Google pour obtenir des réponses pour essayer de trouver des preuves pour lui prouver qu'il avait tort, mais la plupart du temps le débat s'est tourné dans quelle plate-forme il est préférable de développer, de coût, de sécurité, etc... Pour le bien de cet argument, Je ne me soucie vraiment pas de tout cela.

Je voudrais savoir ce que la communauté stack overflow pense de la vitesse/efficacité brute des sites Web en général développés dans ASP.NET avec MVC versus exactement le même site web développé avec PHP?

Quelqu'un a-t-il des exemples pratiques dans des scénarios réels comparant les performances des deux technologies?

(je me rends compte pour certains d'entre vous que cela peut très bien être un argument non pertinent et peut-être stupide, mais c'est un argument, et j'aimerais toujours entendre les réponses des bonnes personnes ici à S. O.)

67
demandé sur 7wp 2009-03-28 04:04:40

11 réponses

C'est une comparaison difficile à faire parce que les différences dans les piles respectives signifient que vous finissez par faire la même chose différemment et si vous les faites de la même manière à des fins de comparaison, ce n'est pas un test très réaliste.

PHP, que j'aime, est dans sa forme la plus basique chargé avec chaque requête, interprété puis rejeté. Il ressemble beaucoup à CGI à cet égard (ce qui n'est pas surprenant étant donné qu'il a environ 15 ans).

Maintenant, au fil des ans, diverses optimisations ont été fait pour améliorer les performances, notamment la mise en cache des opcodes avec APC, par exemple (à tel point QU'APC sera une partie standard de PHP 6 et non un module optionnel comme il l'est maintenant).

Mais les scripts PHP sont fondamentalement transitoires. Les informations de Session sont (normalement) basées sur des fichiers et mutuellement exclusives (session_start () bloque les autres scripts accédant à la même session utilisateur jusqu'à ce que session_commit () ou le script se termine) alors que ce n'est pas le cas dans ASP.NET. mis à part les données de session, c'est assez facile (et normal) d'avoir des objets qui vivent dans le contexte de l'application dans ASP.NET (ou Java d'ailleurs, qui ASP.NET est beaucoup plus similaire à).

C'est une différence clé. Par exemple, l'accès à la base de données en PHP (en utilisant mysql, mysqli, PDO, etc) est transitoire (malgré les connexions persistantes) alors que. NET / Java utilisera presque toujours des pools de connexions persistantes et construira en plus de cela pour créer des frameworks ORM et autres, les caches pour lesquels sont au-delà de tout particulier demande.

En tant que plate-forme interprétée par bytecode, ASP.NET est théoriquement plus rapide, mais les limites de ce que PHP peut faire sont si élevées qu'elles ne sont pas pertinentes pour la plupart des gens. 4 des 20 meilleurs sites visités sur Internet sont PHP par exemple. Vitesse de développement, robustesse, coût de fonctionnement de l'environnement, etc... ont tendance à être beaucoup plus important lorsque vous commencez à l'échelle que toute différence de vitesse théorique.

Gardez à l'esprit que. Net a des types primitifs, la sécurité des types et ces sortes de les choses qui rendront le code plus rapide que PHP peuvent l'exécuter. Si vous voulez faire un test quelque peu injuste, triez un tableau d'un million d'entiers 64 bits aléatoires dans les deux plates-formes. ASP.NET va le tuer car ce sont des types primitifs et les tableaux simples seront plus efficaces que les tableaux associatifs de PHP (et tous les tableaux de PHP sont associatifs en fin de Compte). De plus, PHP sur un système d'exploitation 32 bits n'aura pas d'entier 64 bits natif, donc souffrira énormément pour cela.

Il convient également de souligner que ASP.NET est pré-compilé alors que PHP est interprété à la volée (à l'exclusion de la mise en cache des opcodes), ce qui peut faire la différence mais la flexibilité de PHP à cet égard est une bonne chose. Être capable de déployer un script sans rebondir sur votre serveur est génial. Il suffit de le déposer et il fonctionne. Brillant. Mais il est moins performant en fin de compte.

En fin de compte, je pense que vous discutez de ce qui est vraiment un détail non pertinent.

65
répondu cletus 2013-11-18 04:27:41

ASP.NET fonctionne plus vite. ASP.NET le développement est plus rapide. Achetez un ordinateur rapide et profitez-en si vous faites des applications Web professionnelles sérieuses

ASP.NET le code s'exécute beaucoup plus rapidement par rapport à PHP, quand il est construit en mode Release, optimisé,mis en cache, etc. Mais, pour les sites Web (sauf les grands joueurs, comme Facebook), c'est moins important - le plus de temps de rendu de page est l'accès et l'interrogation de la base de données.

Dans la connexion de la base de données ASP.NET est beaucoup mieux-dans asp.net nous utilisez généralement LINQ qui traduit nos requêtes d'objets en procédures stockées dans la base de données SQL server. La connexion à la base de données est également persistante, un pour un site web, il n'est pas nécessaire de se reconnecter.

PHP, en comparaison, ne peut pas contenir la connexion sql server entre la requête, il se connecte, récupère les données de la base de données et détruit, lors de la reconnexion de la base de données est souvent 20-30% du temps de rendu de la page.

Toute la configuration de l'application web est également rechargée en php à chaque requête, où asp.net it persistent dans la mémoire. Il peut être facilement vu dans de grands frameworks d'entreprise comme symfony/symfony2, beaucoup de temps de rendu est symfony internal processess, où asp.net charges c'est une fois et ne gaspillez pas votre serveur pour un travail inutile.

ASP.NET peut contenir l'objet dans le cache dans la mémoire de l'application-en php, vous devez l'écrire dans des fichiers, ou utiliser hack comme memcache. l'utilisation de memcache est beaucoup de travail avec des problèmes de concurrence et de danger (le stockage du cache dans les fichiers a également ses propres problèmes avec concurrence-chaque requête démarre un nouveau thread du serveur apache et de nombreuses requêtes peuvent fonctionner une fois - vous devez penser à la concurrence entre ces threads, cela prend beaucoup de temps de développement et ne fonctionne pas toujours parce que php n'a pas de mécanismes mutex dans le langage, donc vous ne pouvez pas faire de section critique).

Maintenant quelque chose sur la vitesse de développement: ASP.NET avoir deux frameworks principaux conçus pour cela (Webforms et MVC), installés avec l'environnement, où en PHP vous devez obtenir un structure open-source. Il n'y a pas de framework standard en php comme dans asp.NET.

ASP.NET la langue est si riche, la bibliothèque standard a des solutions pour des problèmes très communs, où la bibliothèque standard PHP est ... nu... ils ne peuvent pas garder une convention de nommage.

. net a des types, où PHP est dynamique, donc cela signifie aucun contrôle sur le code source jusqu'à ce que vous l'exécutiez ou écriviez des tests unitaires.

. net a un excellent IDE où les IDE PHP sont moyens ou moyens (PHPStorm est encore bien pire que VS+resharper ou même sans elle)

L'échafaudage PHP dans symfony est déclenché à partir de la ligne de commande lorsque ASP.NET l'échafaudage est intégré dans l'environnement.

Si vous avez un ordinateur lent comme mon (un noyau 2,2 ghz), en développement asp.net les pages peuvent être douloureuses car vous devez recompiler votre projet sur n'importe quel changement de code source, où le code PHP s'actualise immédiatement.

La syntaxe du langage PHP est si inachevée, insolide et nue par rapport à la syntaxe C#. Types forts en C# et beaucoup les fonctionnalités de langage flexibles peuvent accélérer votre développement et rendre votre code moins bogué.

27
répondu Kamil Orzechowski 2012-10-20 04:12:49

Dans mon expérience (Non-hardbenchmarked) Asp.Net peut certainement rivaliser (et dans certains domaines surpasser) PHP en termes de vitesse brute. Mais similaire avec beaucoup d'autres questions liées au choix de la langue, la déclaration suivante est (dans ce cas) valide (à mon avis):

  • Il y a des sites lents et bogués en langage x (que ce soit PHP ou Asp.Net)
  • Il existe de grands sites rapides en langage x (que ce soit PHP ou Asp.Net)

Ce que j'essaie de dire: les (talents du) développeur influencer la vitesse globale plus qu'un choix entre deux technologies (à peu près équivalentes dans une certaine mesure abstraite).

Vraiment, une comparaison de "vitesse globale" n'a pas beaucoup de sens car les deux peuvent se rattraper d'une manière ou d'une autre, sauf si vous êtes dans un créneau spécialisé très spécifique (dont vous ne nous avez pas informés).

20
répondu ChristopheD 2009-03-28 01:39:21

J'ai fait un test de performance.

Programme: somme de 10000000 numéros

entrez la description de l'image ici

entrez la description de l'image ici

La sortie donnée prouve que php est plus lent que C#............

13
répondu Hitesh Modha 2018-06-18 05:00:12

Je dirais ASP.net

Choses à considérer:

  • ASP.net est pré-compilé
  • ASP.net est généralement écrit en C#, ce qui devrait s'exécuter plus rapidement que PHP

Certes, les différences sont très mineures. Il y a des avantages à la fois, je pense que PHP est beaucoup plus facile à déployer et peut fonctionner sur n'importe quel serveur pas seulement IIS. Je suis assez friand de ASP.net MVC cependant.

11
répondu bbedward 2012-03-05 19:16:24

Sans aucune optimisation, une application compilée. net fonctionnerait bien sûr "plus vite" que php. Mais vous avez raison que c'est un argument stupide et non pertinent parce qu'il n'a aucune incidence sur le monde réel au-delà des droits de vantardise.

5
répondu pbreitenbach 2009-08-30 07:44:03

Généralement ASP.Net fonctionnera mieux sur un matériel donné que PHP. ASP.Net MVC peut faire mieux encore (peut être le mot opératoire ici). La plupart de la plate-forme est conçue avec le développement d'entreprise à l'esprit. Code Testable, séparation des préoccupations, etc. Beaucoup de ballonnement dans ASP.Net provient de la pile d'objets dans la page (contrôles imbriqués). La pré-compilation rend cela plus performant, mais cela peut être un problème clé. MVC a tendance à permettre moins d'imbrication, en utilisant la vue basée sur webforms moteur (d'autres sont disponibles).

Où les plus grands ralentissements dans les applications web se produisent ont tendance à être les services distants, en particulier la persistance de la base de données. PHP est programmé sans l'avantage de la mise en commun des connexions, ou de l'état de session en mémoire. Cela peut être surmonté avec memcached et d'autres couches de service plus performantes (également disponibles pour. Net).

Cela se résume vraiment aux spécificités d'un site/application. ce site arrive à exécuter MVC sur un matériel assez modeste assez bien. Un un site similaire sous PHP tomberait probablement sous son propre poids. Autres choses à considérer. IIS vs Apache vs LightHTTPD etc. Honnêtement Le PHP vs asp.net est beaucoup plus que des différences de performance brutes. PHP ne se prête pas bien aux grandes applications complexes presque autant que asp.net mvc, c'est aussi simple que ça... Cela lui-même a plus à voir avec VS+SCC que toute autre chose.

3
répondu Tracker1 2009-03-28 02:38:50

J'aurais tendance à être d'accord avec vous (cela ASP.NET MVC est plus rapide), mais pourquoi ne pas faire un pari amical avec votre ami et partager les résultats? Créez une page dynamique très simple, dérivée d'une base de données MySQL, et chargez la page plusieurs fois.

Par exemple, créez une table avec 1 000 000 lignes contenant une clé primaire séquentielle, puis un # aléatoire dans la deuxième colonne. Chacun de vos sites peut accepter la clé primaire dans un GET, récupérer le # aléatoire en fonction de la clé passée et afficher le # aléatoire dans un certain type de html généré dynamiquement.

J'aimerais connaître les résultats ... et si vous avez un blog ou similaire, le reste du monde le ferait aussi (cette question est posée tout le temps).

Ce serait encore mieux si vous pouviez construire cette petite application simple dans ASP régulière aussi. Heck, je vous paierais même pour ces résultats si le test était bien conçu. Sérieusement-juste exprimer votre intérêt ici et je vais vous envoyer mon e-mail.

1
répondu Beep beep 2009-03-28 02:08:25

Besoin de noter que la question Est. net MVC vs PHP, pas. Net (Web Forms) vs PHP. Je n'ai pas les faits, mais le sentiment général est que les sites Web PHP fonctionnent plus vite que les sites de formulaire Web. net (et je fais. net seulement). . Net Web forms bien qu'il soit compilé vs interprété PHP est généralement lent car tout le morceau de code généré automatiquement par le moteur.Net pour rendre le HTML pour chaque que vous utilisez en mode de conception. Obtenir un formulaire web. Net pour rivaliser en vitesse avec PHP est un odisea complet qui commence par définir EnableViewState = false, et peut se terminer par l'utilisation de chaque contrôle html avec runat = server... de dingue euh?

Maintenant, MVC est une histoire différente, j'avais fait deux sites Web en utilisant. net MVC2 et le sentiment est bon, vous pouvez sentir la vitesse maintenant! et le code est aussi propre que n'importe quel site web PHP. Donc, maintenant, MVC vous permet d'écrire du code propre comme le fait PHP, et MVC est compilé contre PHP interprété, cela ne peut conduire qu'à une chose, MVC plus rapide que PHP... le temps prouvera, quand le sens général est " Sites MVC fonctionne plus vite que PHP " alors nous aurons raison sur ce que je dis ici aujourd'hui.

Voir/vous/!

1
répondu Nestor 2010-10-10 13:24:34

C++... En ce moment le combat sera entre PHP et ASP.NET. PHP va gagner sur la facilité d'utilisation, ASP.NET gagnera sur les performances ( dans un écosystème Windows server). Beaucoup des plus grands sites Web qui ont commencé avec php ont obtenu leur diplôme en C++.

-2
répondu Mike 2015-01-25 05:00:23

Je suis un expert développeur sur les deux technologies (ASP.Net c# et PHP5). Après des années et des années de travail et de les comparer dans des environnements de production réels, voici mes impressions:

  • Tout d'abord, je ne peux pas les comparer en faisant une boucle d'ajout de valeurs 1.000.000, ce n'est pas un cas réel.

  • N'est-ce pas la même chose en les comparant dans mon environnement de développement qu'un véritable environnement de production. Par exemple: en développement ASP.Net n'utilise pas IIS par défaut, utilise un développement interne serveur qui a différentes optimisations. En dev, il n'y a pas de concurrence.

Donc, mon opinion est la suivante:

  • Boucler 1.000.000 fois c# va être plus rapide.(aucun sens)

  • Servir une vraie page, qui accède à la base de données, montre des images, a des formulaires, etc.... ASP.Net est plus lent que PHP.

  • Le poids des pages ASPX est x10 Plus lourd que PHP, donc cela fait que l'utilisateur final attend plus de temps pour obtenir la page.

  • ASPX est plus lent à développer que PHP, c'est important car à la fin c'est de l'argent. Nous développons un 35% plus rapide en PHP que ASP.Net, en raison d'avoir à compiler et redémarrer chaque fois que vous voulez vérifier smthg.

  • Dans les grands projets, ASP.Net à long terme, il est préférable d'éviter les erreurs et d'avoir une architecture complexe.

  • En raison des serveurs Windows, IIS,.... à la fin, vous avez besoin d'un serveur puissant pour contenir le même nombre d'utilisateurs sur ASP que PHP. Par exemple: nous servons avec ASP.net arround 20.000 utilisateurs simultanés et en PHP, le même serveur peut obtenir environ 30.000 utilisateurs.

La seule chose importante est de ne pas boucler lequel est le plus rapide. La chose est quand le site web est réel et est en production, combien d'utilisateurs ils peuvent tenir, combien est lourd la page (plus lourd= = plus de temps d'attente des utilisateurs, plus de charge nette du serveur, plus de charge de disque du serveur, plus de charge de mémoire du serveur). Essayez les temps de vérification avec la concurrence et vous verrez.

J'espère que ça aide.

-3
répondu Christian 2015-07-27 17:02:15