performance - Comparaisons de vitesse

Translate

Dans les langages de programmation interprétés, tels que PHP et JavaScript, quelles sont les répercussions d'une approche orientée objet sur 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édurale et orientée objet, pour optimiser non seulement la vitesse, mais également la maintenabilité. Les recherches citées et les cas de test seraient également utiles si vous connaissez des articles explorant cela plus avant.

En bout de ligne: quelle est l'ampleur (le cas échéant) de la performance réelle, lorsque vous utilisez OO vs procédural dans un langage interprété?

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

Peut-être que je suis fou, mais m'inquiéter de la vitesse dans des cas comme celui-ci en utilisant 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 entièrement prématuré.

Vous avez frappé dans le mille lorsque vous avez dit «maintenabilité». Je choisirais l'approche la plus productive et la plus maintenable. Si vous avez besoin de vitesse plus tard, cela ne viendra pas du basculement entre les paradigmes de codage procédural et orienté objet dans un langage interprété.

La source
Translate

Malheureusement, j'ai aussi fait mes tests. J'ai testé la vitesse, et c'est à peu près la même chose, mais en testant l'utilisation de la mémoire avec memory_get_usage () en PHP, j'ai vu un nombre extrêmement important 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! Augmentation de 1000% de l'utilisation? Désolé, ce n'est pas optimal. Et comme autant d'utilisateurs accèdent à votre site Web à la fois, je suis sûr que votre RAM brûlerait ou s'épuiserait. Ai-je tort?

La source
Translate

En bout de ligne: non, car la surcharge de l'interprétation dépasse la surcharge de la répartition des méthodes.

La source
Translate

D'après mon expérience, un site sous forte charge s'enlisera et deviendra beaucoup plus facilement insensible avec le code POO que 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, ajoutant à la charge du processeur pour l'exécuter, en particulier lors des opérations de base de données.

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

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

La source
Translate

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

La source
Translate

Votre performance sera caractérisée par la mise en œuvre et non par la langue. Vous pouvez utiliser le langage le plus lent et il pourrait évoluer pour devenir le plus grand site au monde tant que vous le concevez à l'échelle.

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

Ne fais pas ça.

:)

La source
Translate

En fait, j'ai fait un petit test comme celui-ci en python sur un site Web que je maintiens et j'ai trouvé qu'ils sont presque équivalents en vitesse, avec l'approche procédurale gagnante par quelque chose comme 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 (dans mon expérience en tout cas).

La source