C'est peut-être une question idiote, mais en tant que personne relativement nouvelle dans PHP, je me demande s'il y a des problèmes de performances liés à l'ouverture et à la fermeture fréquentes des balises PHP dans le code de modèle HTML, et si oui, quelles pourraient être les meilleures pratiques en termes de travailler avec des balises PHP?
Ma question ne porte pas sur l'importance / l'exactitude des balises de fermeture, ou sur le type de code plus lisible qu'un autre, mais plutôt sur la façon dont le document est analysé / exécuté et quel impact cela pourrait avoir sur les performances.
Pour illustrer, considérons les deux extrêmes suivants:
Mélanger les balises PHP et HTML:
<?php echo
'<tr>
<td>'.$variable1.'</td>
<td>'.$variable2.'</td>
<td>'.$variable3.'</td>
<td>'.$variable4.'</td>
<td>'.$variable5.'</td>
</tr>'
?>
// PHP tag opened once
Séparer les balises PHP et HTML:
<tr>
<td><?php echo $variable1 ?></td>
<td><?php echo $variable2 ?></td>
<td><?php echo $variable3 ?></td>
<td><?php echo $variable4 ?></td>
<td><?php echo $variable5 ?></td>
</tr>
// PHP tag opened five times
Serait intéressé d'entendre quelques points de vue à ce sujet, même si c'est juste pour entendre que cela ne fait aucune différence.
Merci.
Réponses:
3 règles simples pour bien faire les choses:
Les problèmes de performances sont assez difficiles à comprendre. Il est conseillé aux débutants de ne pas en tenir compte. Parce qu'ils sont toujours impressionnés par des choses insignifiantes et ne voient pas les choses vraiment importantes. Juste par manque d'expérience.
Idem pour votre question. Imaginez que vous obtiendrez jamais une différence. Même le plus gros, disons, une méthode est 2 fois plus rapide. Oh mon Dieu, 2 fois! Je l'ai choisi et j'ai bien optimisé mon application, elle fonctionnera 50% plus vite maintenant!
Faux . Pas 50%. Vous ne remarquerez ni ne mesureriez jamais cette augmentation de vitesse. Parce que vous avez optimisé une partie qui ne prend que 0 0001% de l'exécution totale du script.
Quant aux gros tableaux HTML, cela prend beaucoup de temps au navigateur pour les rendre. Beaucoup plus qu'il n'en fallait pour générer.
Le profilage est un mot clé dans le monde de la performance. On peut éliminer sans aucun doute toute question relative à la performance s'il n'y a pas de mot «profilage». Dans le même temps, le profilage n’est pas sorcier. Je mesure juste le temps d'exécution de différentes parties de votre script. Peut être fait avec un profileur, comme xdebug, ou même manuellement, en utilisant
microtime(1)
. Et seulement après avoir détecté la partie la plus lente, vous pouvez commencer par des tests.Apprenez à profiler avant de poser des questions sur les performances. Et apprenez à ne pas poser de questions sur les performances s'il n'y a pas de vraies raisons à cela.
L'optimisation prématurée est la racine de tout mal - D.Knuth .
la source
J'ai refait les tests avec 50000 lignes et ajouté la méthode multi-écho en 1 tag aussi
duration1: 31.15542483 Secondes
duration2: 30.23169804 Secondes
duration3: 27.54640007 Secondes
Pas beaucoup de différence entre les 2 méthodes originales, mais on dirait que c'est un peu plus rapide avec moins de concaténation @poke
Comme je doute que j'aurai besoin de autant de données en une fois, je suppose que je continuerai à utiliser de nombreuses balises, l'indentation du code semble plus nette et la disposition de la `` source de vue '' plus précise
la source
echo
Accepte également plusieurs expressions à afficher. Aucune variante avec cette fonctionnalité n'a été prise en compte dans les métriques.Vous pouvez facilement ignorer la différence de performance entre ces deux. Avec les ressources informatiques modernes d'aujourd'hui, la différence n'a vraiment pas d'importance. Ce genre de trucs d'impression à l'écran ne sont vraiment pas à craindre. Il y a des tonnes d'autres choses que vous devriez envisager avant. En dehors de cela, il y a toujours un débat entre les meilleures performances et la maintenabilité de votre code. Vous ne pouvez pas toujours essayer d'obtenir les meilleures performances. Au lieu de cela, vous devez toujours tenir compte des problèmes de performance ainsi que du temps que vous devez consacrer à leur amélioration.
la source
Un code facile à traduire en pseudo-code est meilleur. Ceci est démontré par les exemples ci-dessus. Qu'est-ce qui prend plus de temps à dire?
Personnellement, je ferais:
Une explication technique sur le fonctionnement de l'interprète et pourquoi une voie est plus rapide qu'une autre n'est pas pertinente pour un débutant. Il est préférable de connaître les règles de base:
Utilisez plus de balises si le résultat global est plus simple. Période.
la source
Le vrai problème avec cela est l'utilisation de la mémoire. La concaténation de chaînes et l'écho de masse peuvent augmenter l'utilisation de la mémoire de manière exponentielle.
Si vous spammez la balise php, votre code devient illisible.
La meilleure solution consiste à utiliser un moteur de modèle et à éviter de mélanger complètement le code et la présentation.
la source