Je suis en train de rédiger une classe qui finira probablement d'environ 3000 lignes de code. P>
Ce que j'aimerais savoir est très simple, initiera cette classe en haut de chaque page ralentir le temps d'exécution de la page, même si seulement une / deux des méthodes d'objets seront utilisées? Est-ce que cela va mettre beaucoup plus de souche sur mon serveur s'il est accessible plusieurs milliers de fois par jour? P>
Si tel est le cas, devrais-je envisager de créer des extensions pour gérer chaque méthode au lieu d'avoir la classe entière dans un fichier? P>
édité fort> p>
Premièrement, juste pour corriger KingCrunch et Kenaniah, cette classe est destinée à mon API, ce qui signifie que cela contient de nombreuses fonctions pour récupérer des données à afficher sur le site Web et sur notre application iPhone, ainsi que sur toute notre application Facebook. Donc, 3000 lignes sont jolies à la taille de la taille et des capacités de notre site Web, sans oublier que plus de 700 de ces lignes sont des commentaires. Je peux donc vous assurer qu'il n'y a pas de faille de conception, bien qu'il puisse y avoir une faille structurelle, c'est pourquoi je pose cette question ... P>
La fonction de construction définit simplement les valeurs par défaut sur les variables définies, rien de plus. P>
J'ai complètement réécrit ce fichier à partir de zéro, il n'y a pas d'ancien code et je suis sûr que les méthodes de la classe sont aussi efficaces que possible. P>
J'ai surveillé mon utilisation de serveur, etc., ainsi que de simuler des volumes élevés de trafic à l'aide de l'outil Apache AB et, bien que mon utilisation de la mémoire puisse tirer dessus, cela semble être correct. P>
3 Réponses :
Non, instanciant d'une classe composée de nombreux LOC, ne le rend pas automatiquement lent. p>
C'est-à-dire que si vous faites quelque chose dans le constructeur, mais cela dépend de ce que vous faites là-bas et non de la taille de la classe. P>
initiera cette classe en haut de chaque page ralentir le temps d'exécution de la page p> blockQuote>
va-t-il ajouter au moment de l'exécution? Oui. Bien sûr. Rien n'est gratuit. Chaque ligne de code analysée a une petite surcharge (toutefois, vous pouvez vous débarrasser de la majeure partie de ce coût avec un cache de fonctionnement comme APC). Cependant, nous parlons probablement des frais généraux des sous-millisecondes. Le seul moyen d'être sûr est de le profiler vous-même. P>
est-ce que cela va mettre beaucoup plus de souche sur mon serveur s'il est accessible plusieurs milliers de fois par jour? P> blockQuote>
de l'expérience personnelle, non. Mais encore une fois, profilez et mesurez-vous. Vous devez surveiller les métriques de performance de base sur votre serveur (utilisation de la CPU, la moyenne de charge, etc.). Déployez votre changement et regardez vos métriques. P>
Pour la première partie, cela dépend de celui-ci, s'il en a besoin des lignes 3K et envisagez de le diviser dans plusieurs classes, il finira par les charger tout un par un, dont il restera plus lentement ses performances.
Oui, y compris dix fichiers de ligne de 300 lignes est (un peu) plus lentement que celui comprenant un fichier de 3000 lignes. Encore une fois, la différence réelle de temps mural est probablement assez triviale.
Mais avec AutoLoading, il peut ne pas être nécessaire de charger toutes les "sous-classes" pour chaque demande, ce qui constitue également une bonne justification de l'utilisation de l'APC.
Non, en fait, il est plus rapide que de le diviser dans plusieurs fichiers. p>
Le seul problème est que cela entraîne souvent un gros bloc de code et des modifications sont plus difficiles à faire. P>
Edit: Ce sera plus rapide si toutes les lignes sont utiles. Si vous avez beaucoup d'ancien code, vous pourriez envisager un nettoyage p>
Un groupe de 3000 locs sonne plus comme une faille de conception que d'un problème de performance ...
En bref, oui, il va ralentir parce qu'il devra initialiser cette classe. Ce n'est probablement pas aussi mauvais que vous le pensez. On dirait que vous voudrez peut-être regarder cette question connexe: Stackoverflow.com/questions/1424382/...
Réponse courte: oui i>. Réponse longue: Il existe un ensemble infini de facteurs que ralentissez i> une page. Ce que vous perdez i> dans 3000 lignes de code pourrait être composé ailleurs.
Que fait la classe? et pourquoi l'instanciate sur chaque page?
3000 lignes de code? Vous devez refacteur, car vous faites vraiment quelque chose de mal.
Pourquoi ne le casse-tu pas en morceaux plus petits? Sortez les fonctions communes et créez une nouvelle classe .. Héritage aidera s'ils dépendent. Puisque vous utilisez uniquement des méthodes de couple, ce sera mieux si vous y prenez un bon couple et de redéfinir votre classe
Même si vous essayez d'expliquer: 2300 locs pour une seule classe est trop i>.
Eh bien, cette classe est de plus de 5000 lignes de long, me dis-tu que vous pouviez obtenir la même chose en moins de 1000? Télécharger la classe