74 votes

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

J'ai un sympathique argument avec un co-travailleur à ce sujet, et mon opinion personnelle est qu'un ASP.NET MVC compilé application web serait de courir de façon plus efficace/plus rapide 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. (ni-t-il)

Pour cela, j'ai essayé de Google pour obtenir des réponses à tenter de trouver des preuves pour prouver qu'il se trompait, mais la plupart du temps, le débat a tourné dans la plate-forme, il est préférable de développer, de coût, de sécurité, etc... au nom de cet argument, j'ai vraiment ne se soucient pas de tout ça.

Je voudrais savoir ce débordement de pile de la communauté pense de la vitesse brute/efficacité des sites web en général qui sont développés dans la ASP.NET avec MVC rapport à exactement le même site web développé en PHP?

Quelqu'un at-il des exemples pratiques dans le monde réel des scénarios de comparer la performance des deux technologies?

(Je me rends compte que pour certains d'entre vous cela peut très bien être inutiles et peut-être stupide argument, mais c'est un argument, et je voudrais encore entendre les réponses de l'amende gens d'ici à la S. O.)

70voto

cletus Points 276888

C'est un dur comparaison à faire parce que les différences dans les piles de vous faire la même chose différemment et si vous les faites la même chose pour les fins de la comparaison, il n'est pas très réaliste de test.

PHP, ce qui me plaît, c'est dans sa forme la plus élémentaire chargé avec chaque demande, interprété et puis jetés. Il est très bien comme CGI en ce sens (qui n'est pas surprenant, considérant qu'il est d'environ 15 ans).

Maintenant, au fil des ans, diverses optimisations ont été faites pour améliorer les performances, notamment le cache d'opcode avec les APC, par exemple (si bien que les APC seront une partie intégrante de PHP 6 et pas un module optionnel, comme c'est le cas maintenant).

Mais encore les scripts PHP sont essentiellement transitoire. Les informations de Session sont (normalement) à base de fichiers et mutuellement exclusives (session_start() bloque les autres scripts qui accèdent à la même session de l'utilisateur jusqu'à ce que session_commit() ou la fin du script) alors que ce n'est pas le cas dans ASP.NET. Outre les données de session, il est assez facile (et normal) pour avoir des objets qui vivent dans le contexte de l'application dans ASP.NET (ou Java pour la question, ce qui ASP.NET est beaucoup plus similaire).

C'est une différence fondamentale. Par exemple, les bases de données en PHP (mysql, mysqli, PDO, etc) est transitoire (les connexions persistantes malgré) alors que .Net/Java sera presque toujours utiliser une connexion permanente piscines et de construire sur le dessus de cela pour créer ORM cadres et assimilés, les caches qui sont au-delà de toute demande particulière.

Comme un bytecode interprété plate-forme, ASP.NET est théoriquement plus rapide, mais les limites de ce que PHP peut en faire sont si élevés que les sans intérêt pour la plupart des gens. 4 du top 20 des sites visités sur internet sont en PHP par exemple. La vitesse de développement, la robustesse, le coût de l'exécution de l'environnement, etc... ont tendance à être beaucoup plus important lorsque vous commencez à l'échelle de toute théorique différence de vitesse.

Gardez à l'esprit que .Net a les types primitifs, type de sécurité, et ces sortes de choses qui vont rendre le code plus rapide que PHP puisse l'exécuter. Si vous voulez faire un peu injuste de test, le tri d'un tableau d'un million aléatoire de 64 bits entiers dans les deux plates-formes. ASP.NET va le tuer parce qu'ils sont des types primitifs et des tableaux simples seront plus efficaces que PHP tableaux associatifs (et tous les tableaux en PHP sont associatifs en fin de compte). Plus PHP sur un OS 32 bits ne pas avoir un native 64 bits entier donc en souffrira énormément.

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

Mais à la fin je pense que vous êtes en discuter sur ce qui est vraiment un détail sans importance.

33voto

Kamil Orzechowski Points 167

ASP.NET s'exécute plus rapidement. ASP.NET le Développement est plus rapide. Acheter ordinateur rapide, et profiter si vous faites affaire sérieuse, les applications web

ASP.NET le code s'exécute beaucoup plus rapidement par rapport à PHP, lorsqu'elle est érigée en mode de diffusion optimisée, la mise en cache etc etc. Mais, pour les sites web (à l'exception de grands joueurs, à l'instar de Facebook), il est moins important - le plus de temps de rendu d'une page de temps est de l'accès et d'interrogation de la base de données.

Dans la connexion de base de données ASP.NET c'est beaucoup mieux en asp.net nous avons généralement l'utilisation de LINQ qui traduit notre objet de requêtes dans des procédures stockées dans la base de données SQL server. Aussi la connexion à une base de données persistante, un pour un site web, il n'est pas nécessaire pour la reconnexion.

PHP, en comparaison, ne peut pas tenir sql server connexion entre la demande de, connecter les, saisir des données à partir de db et détruit, lors de la reconnexion de la base de données est souvent de 20 à 30% de la page, le temps de rendu.

Aussi l'ensemble de l'application web de la config est rechargé en php sur chaque demande, où dans asp.net il persiste dans la mémoire. Il peut être facilement vu dans le grand, entreprise des frameworks comme symfony/symfony2, beaucoup de temps de rendu est symfony interne procédés, où asp.net les charges c'est une fois et ne perdez pas votre serveur pour un travail inutile.

ASP.NET peut détient objet en cache dans la mémoire de l'application en php, vous devez écrire dans des fichiers, ou utiliser hack comme memcache. utiliser memcache est beaucoup de travail avec la concurrence d'accès et les problèmes d'aléa (stockage de cache dans des fichiers aussi avoir ses propres problèmes avec la simultanéité - chaque demande de commencer à nouveau thread du serveur apache et la demande de nombreux peuvent travailler sur un temps que vous avez à penser la simultanéité entre les threads, c'prendre beaucoup de temps de développement et ne travaillent pas toujours parce que php n'ont pas de mutex mécanismes de la langue, de sorte que vous ne pouvez pas faire de section critique en quelque sorte).

maintenant quelque chose à propos de la vitesse de développement: ASP.NET deux principaux cadres conçus pour cela (Webforms et MVC), installé avec l'environnement, alors qu'en PHP, vous devez obtenir une structure open-source. Il n'existe pas de cadre standard en php comme dans asp.NET.

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

.NET a des types, où PHP est dynamique, cela signifie donc pas de contrôle sur le code source jusqu'à ce que vous exécutez ou écrire des tests unitaires.

.NET a une grande IDE où PHP IDE sont de moyenne ou moyenne-bonne (PHPStorm est encore bien pire que VS+resharper ou même sans)

PHP échafaudage dans symfony est tiré à partir de la ligne de commande lors de l'ASP.NET un échafaudage est intégré dans l'environnement.

Si vous avez ordinateur lent comme mon (un core 2,2 ghz), le développement de asp.net les pages peuvent être douloureux parce que vous devez recompiler votre projet sur toute modification de code source, d'où le code PHP actualiser immédiatement.

PHP syntaxe de la langue est donc inachevé, unsolid et nu par rapport à la syntaxe C#. - Fortes en C# et bien souple fonctionnalités de langage peut accélérer votre développement et de rendre votre code moins buggé.

22voto

ChristopheD Points 38217

Dans ma (non-hardbenchmarked) expérience Asp.Net peut certainement rivaliser (et dans certains domaines, surpasser) de PHP en termes de vitesse brute. Mais semblable à beaucoup d'autres langues-choix des questions liées à l'instruction suivante est (dans ce cas) valide (à mon avis):

  • Il y a lent, buggé sites en langue x (PHP ou Asp.Net)
  • Il y a de grands, rapide sites en langue x (PHP ou Asp.Net)

Ce que j'essaie de dire: la (les talents de la) développeur aura une influence sur la vitesse globale plus qu'un choix entre les deux (à peu près équivalent dans certains abstraite de mesure) technologies.

Vraiment, une 'vitesse' la comparaison ne fait pas beaucoup de sens car les deux peuvent rattraper les uns aux autres d'une manière ou d'une autre, sauf si vous êtes dans un très spécialisés de niche (que vous n'avez pas de nous informer sur).

17voto

Hitesh Modha Points 580

PHP est plus lent que C #.

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

Étant donné la sortie prouve que php est plus lent que C #

15voto

bbedward Points 2547

Je dirais ASP.net

Choses à considérer:

  • ASP.net est pré-compilé
  • ASP.net est généralement écrit en C #, ce qui devrait être plus rapide que PHP

Certes, les différences sont très mineures. Je pense que PHP est beaucoup plus facile à déployer et peut fonctionner sur n’importe quel serveur, pas seulement IIS. J'aime beaucoup ASP.net MVC.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X