Question

Dans les langages de programmation interprétés, tels que PHP et JavaScript, quelles sont les répercussions d'une approche orientée objet par rapport à une approche procédurale ?

Plus précisément, ce que je recherche, c'est une liste de contrôle des éléments à prendre en compte lors de la création d'une application Web et du choix entre les approches procédurales et orientées objet, pour optimiser non seulement la vitesse, mais également la maintenabilité.Des recherches et des cas de test cités seraient également utiles si vous connaissez des articles explorant cela plus en détail.

Conclusion :quelle est l'ampleur (le cas échéant) des performances réellement affectées, lorsque l'on utilise OO vs.Procédural dans un langage interprété ?

Était-ce utile?

La solution

Peut-être que je suis fou, mais s'inquiéter de la rapidité dans des cas comme celui-ci, utiliser un langage interprétatif, c'est comme essayer de déterminer de quelle couleur peindre le hangar.N'entrons même pas dans l'idée que ce type d'optimisation est totalement prématuré.

Vous avez mis le doigt sur la tête lorsque vous avez parlé de « maintenabilité ».Je choisirais l'approche la plus productive et la plus maintenable.Si vous avez besoin de rapidité plus tard, cela ne viendra pas en basculant entre les paradigmes de codage procédural et orienté objet dans un langage interprété.

Autres conseils

Malheureusement, j'ai aussi fait mes tests.J'ai testé la vitesse, et c'est à peu près la même chose, mais lors du test de l'utilisation de la mémoire en obtenant memory_get_usage() en PHP, j'ai vu un nombre extrêmement plus grand du côté de la POO.

116 576 octets pour la POO à 18 856 octets pour la procédure.Je sais que « le matériel est bon marché », mais allez !Une augmentation de 1 000 % des usages ?Désolé, ce n'est pas optimal.Et avec autant d'utilisateurs visitant votre site Web en même temps, je suis sûr que votre RAM brûlerait ou s'épuiserait.Ai-je tort?

Conclusion :non, car la surcharge d’interprétation dépasse la surcharge de répartition des méthodes.

D'après mon expérience, un site soumis à une forte charge s'enlisera et ne répondra plus facilement avec du code POO qu'avec du code procédural.La raison est facile à comprendre.

La POO nécessite beaucoup plus d'allocations de mémoire (MALLOC) et beaucoup plus d'opérations à exécuter en mémoire que le code procédural.Il nécessite beaucoup plus de temps CPU pour effectuer ses tâches.Il s'agit essentiellement d'une « surcharge », enroulée autour du code procédural, qui ajoute à la charge du processeur pour son exécution, en particulier lors de l'exécution d'opérations de base de données.

De nombreux programmeurs apprécient la commodité de la POO, qui crée de petites boîtes noires cachées derrière des interfaces simples.Cependant, j'ai été bien payé pour relancer des sites qui mettaient une éternité à répondre sous une forte charge d'utilisateurs.Supprimer la POO et la remplacer par de simples fonctions procédurales a fait une énorme différence.

Si vous ne vous attendez pas à ce que votre site soit très occupé, utilisez la POO.Si vous construisez un système à fort trafic, vous souhaiterez supprimer chaque cycle CPU du traitement et chaque octet de la sortie que vous pouvez.

Si vous utilisez un langage interprété, la différence n'a pas d'importance.Vous ne devez pas utiliser un langage interprété si les performances constituent un problème.Les deux fonctionneront à peu près de la même manière.

Votre performance sera caractérisée par la mise en œuvre et non par le langage.Vous pouvez utiliser le langage le plus lent et il pourrait devenir le plus grand site au monde à condition de le concevoir à grande échelle.

N'oubliez pas la première règle d'optimisation.

Ne le faites pas.

:)

J'ai en fait fait un petit test comme celui-ci en python sur un site Web que je gère et j'ai constaté qu'ils sont presque équivalents en vitesse, avec l'approche procédurale gagnant d'environ dix millièmes de seconde, mais que le code OO était si significatif plus propre, je n'ai pas continué l'exercice plus d'une itération.

Donc vraiment, cela n'a pas d'importance (d'après mon expérience en tout cas).

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