Question

Je construis des sites Web axés sur la base de données. Auparavant, je l'ai utilisé Perl ou PHP avec MySQL.

Maintenant, je commence un nouveau grand projet, et je veux le faire de la manière qui se traduira par le plus réactif possible site .

Je l'ai vu plusieurs pages ici où les questions sur la façon d'optimiser PHP sont critiquées avec différentes versions de « ça ne vaut pas aller très loin pour optimiser PHP car il est un langage interprété et il ne fera pas beaucoup de différence ».

J'ai également entendu diverses discussions (especiallon sur le podcast SO) sur les avantages de par rapport compilé langues interprété , et il semble que ce serait dans mon intérêt d'utiliser un langage compilé servir le site au lieu d'un langage interprété.

Est-ce possible dans un contexte web? Si oui, ce serait un choix linguistique raisonnable?

En plus d'accélérer un avantage que je prévois est la possiblité de trouver des bogues au moment de la compilation au lieu d'avoir à déboguer le site Web. Est-ce raisonnable de s'attendre?

Était-ce utile?

La solution

Qu'est-ce que vous pouvez faire est ce que plusieurs sites Web à fort trafic font (comme Facebook ou Twitter), écrivez votre alias « CPU consommation » dans un algorythme-plugin C.

Par exemple, vous pouvez écrire un extension PHP si vous envisagez d'utiliser PHP, ou l'extension Ruby si vous prévoyez d'utiliser Ruby / Ruby on Rails, etc.

De cette façon, vous pouvez garder votre code Streamline simple et facile à entretenir (il pourrait être beaucoup plus difficile à gérer la demande de C plutôt que de PHP), tout en ayant un noyau solide et solide (parce qu'il est compilé, et le compilateur vous indique quels sont les problèmes au moment de la compilation)

Autres conseils

Si vous deviez construire une nouvelle langue ... et vous êtes venus avec tous la sémantique et il était complet, et vous avez eu une boîte magique qui avait un interrupteur entre faire le langage compilé par rapport à interpréter, la version compilée serait plus rapide que la version interprétée.

Pourquoi? Parce que compilation apporte votre sémantique à un niveau plus bas sur la machine qui signifie qu'il peut exécuter beaucoup plus rapidement, alors que interprétation signifie la sémantique de votre langue se traduit par une chose (par exemple l'interprète) lorsque l'utilisateur utilise réellement votre site.

Cela dit ... cela ne signifie pas nécessairement que votre site va à 100% courir plus vite sur un langage compilé vs un langage interprété. Il y a des interprètes là-bas qui sont très rapides de nos jours pour différentes langues (à savoir PHP), et il y a même des optimiseurs pour les langues qui les rendent interprétées plus vite même encore.

Il y a beaucoup d'autres choses qui entrent dans la performance de votre site qui sont agnostique de la langue que vous choisissez. Configuration matérielle, la configuration de base de données, la topologie du réseau, etc. Ces choses peuvent avoir un plus grand impact sur vous. Je suggère la mesure pour être sûr.

Pour moi, trouver des bogues au moment de la compilation est un énorme gain de temps, donc je tendance à préférer les langages compilés qui sont fortement typés. Cela me permet de faire mon travail plus rapidement, mais cela ne fait pas objectivement la meilleure option. Certaines personnes ont aucun problème à écrire du code faiblement typé, et en cours d'exécution des suites de tests sur eux pour vérifier leur fonctionnalité, que je pense fonctionnerait aussi bien.

à mon humble avis, il est tout à fait un non-sens d'écrire une application web complexe en utilisant un langage compilé, car il ne donne pas des avantages contre un certain nombre de problèmes de gestion.

Il y a beaucoup de façons de lèveront performances et l'évolutivité dans une langue scénarisée, tant au niveau de la langue et au niveau du système, les performances étant mineures gagner éventuellement disponibles avec un langage compilé totalement influent.

De l'autre côté, je trouve très utile d'être possible de suivre un développement agile et bug schéma de chasse, en changeant simplement votre code et de voir les résultats.

Perl n'est pas un langage interprété: il est compilé en bytecode, donc vous payez le prix d'interprétation uniquement lorsque l'exécutable perl est démarré. Donc, lorsque vous l'utilisez avec Apache, ne pas utiliser CGI mais mod_perl.

Quoi que vous fassiez, le temps de développement va probablement dépasser largement le temps de réponse si vous choisissez une langue qui ne convient pas à la programmation web ou ne dispose pas de bonnes bibliothèques pour soutenir ce que vous devez faire. Par exemple. Je ne prends C ou C ++. Vous ne voulez pas une application web qui est férocement rapide mais buggy et 6 mois de retard.

Tomcat est une façon courante d'utiliser les langages compilés pour déployer des pages Web, mais avant d'aller trop loin, envisager sérieusement ce que vos goulots d'étranglement de vitesse seront . Il y a quelques sources principales de ralentissement dans les applications web:

  1. latences réseau
  2. médias statiques, en particulier les images
  3. requêtes de base de données
  4. Code de traitement côté serveur
  5. Code de traitement côté client

1 et 5 n'ont pas vraiment grand-chose à voir avec cette question.

2 sera pertinent si vous avez beaucoup d'images qui varient d'une page à. Si tel est le cas, les navigateurs clients ne feront pas une bonne mise en cache de l'emploi, et chaque chargement de la page prendra un certain temps. Dans ce cas, il est très probable que votre langue côté serveur ne sera pas remarqué, parce que les frais généraux des médias statiques dominera.

3 est susceptible d'être un facteur plus grand que 4 pour un grand nombre d'applications. Si vous avez très peu de données, mais vous faites beaucoup de traitement, puis 4 peut dominer, mais sinon, 3 dominera même si vous utilisez un langage interprété.

Les gens peuvent demander: « Pourquoi optimiser php? » parce que les 2 et 3 sont souvent plus importants de toute façon. Souvent, un bon va être une optimisation mieux (et plus facile).

Il y a beaucoup de pièces qui va dans une application web. Le temps pris par la couche d'application n'a pas besoin d'être grand. Pour une application typique, les plus gros porcs seraient dans le serveur web et dans la base de données. Remplacement PHP avec un cgi binaire ne va pas changer.

En outre, alors que les parties de PHP peuvent être interprétées un peu lent, qui est seulement une petite partie de ce qui se passe dans l'exécution d'un script PHP. Toutes les fonctions qui sont fournis dans le cadre de la langue sont mises en œuvre dans le code natif. Par exemple, lorsque vous appelez une fonction comme preg_match, il appellera une bibliothèque de code natif et laissez-le faire son travail. Cela signifie qu'il ya moins d'interprétation réelle en cours que vous pourriez penser.

Il peut y avoir des cas où l'utilisation d'une autre langue que PHP peut être utile, mais ce sont des cas particuliers. En général, il n'y a rien à gagner ici.

La latence du réseau est de loin le facteur le plus déterminant dans cet argument. En fait, la latence du réseau est tellement d'un facteur qu'il rend des considérations linguistiques plutôt sans importance d'un problème de performance. Alors ... aller avec ce que vous savez. Utilisez la langue que vous êtes le plus confortable et le plus productif avec et d'autres considérations peuvent être élaborées que vous avancez. Maintenant, cela étant dit, il est toujours amusant d'essayer de nouvelles choses et apprendre de nouvelles choses peut devenir une obsession, donc si le projet est un personnel qui vous permet la possibilité d'expérimenter, bien, par tous les moyens .....

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top