Introduction
Le langage PHP est un interpréteur et non pas un compilateur, de nombreuses optimisations et méthode de programmation sont nécessaires pour l'exploiter efficacement.
Voici les techniques d'optimisations les plus communes :
- Un simple guillemet (') est plus rapide qu'un double guillemet (") si vous ne chercher par de variables. Ainsi, lorsqu'il y a des doubles guillemets, il recherche des variables, et lorsqu'il y a une simple guillemet, il ne cherche pas les variables.
- La fonction «echo» est plus rapide que «print».
- Il est préférable d'utiliser plusieurs paramètres avec «echo», soit en utilisant les virgules plutôt que d'effectuer des concaténations de chaine de caractères (.). Exemple :
- <?php
- $fin = ' dans les années du calendrier ';
- echo 'Le premier mois est ','Janvier',$fin;
- ?>
- Fixer la valeur des variables statique avant de commencer une boucle. Exemple : «for($I=0,$Max=count($Tableau); $I <= $Max;$I++)» plutôt que «for($I=0; $I <= count($Tableau);$I++)».
- Utiliser la fonction str_replace plutôt que preg_replace si possible car elle est beaucoup plus rapide dans un cas de simple remplacement.
- Il est préférable d'utiliser la fonction «mysql_fetch_assoc» plutôt que la fonction «mysql_result» lorsqu'il y a beaucoup de résultat, car elle est plus rapide.
- Étrangement, les instructions «else if», sont plus rapide qu'un «switch» en PHP. Par contre, la lisibilité décroit de façon significative. L'opérateur ternaire (?:) est lui aussi plus lent qu'un test «if else».
- Utiliser unset ou null sur les variables afin de libérer le maximum de mémoire.
- Fermer la connexion à la base de données lorsque l'opération est terminé.
- L'utilisation $enregistrement['id'] est 7 fois plus rapide que $enregistrement[id], parce que l'interpréteur PHP n'a pas besoin de deviner de quel index il s'agit, en prenant pour acquis que vous ne vouliez pas de constante.
- Incrémenter une variable locale indéfinit est 9 à 10 fois plus qu'une variable pré-initialisé.
- Utiliser les balises «<?php ... >» plutôt que les autres styles de balises étant obsolète, incluant la balise courte (<? ... >).
- Éliminer les messages d'attentions ou d'erreurs. Activer «error_reporting(E_ALL)» et corriger les erreurs rencontrées.
- Si vous utilisez une redirection comme «header('Location: '.$url);», le suivre immédiatement par exit() afin que le script ne continue pas inutilement. Exemple :
- Les méthodes des classes dérivées s'exécute plus vite que ceux définit dans la classe de base.
- La suppression des erreurs avec «@» ralentit considérablement la vitesse d'exécution.
- L'utilisation de «++$i» plutôt que «$i++» peut se révéler plus rapide puisque le PHP interprète le code et ne le compile pas.
- Même si le gain est négligeable, il est préférable d'utiliser des noms de variables court plutôt que long.
- Faire un test avec la valeur en premier plutôt que la variable, afin d'éviter les erreurs d'assignation. Exemple : «if(1 == $a)». Exemple :
Conclusion
Les bonnes pratiques ne provoquent pas nécessairement une performance beaucoup plus rapide, ainsi si vous gagnez 1% ou 2% de temps réaction, ce sera déjà beaucoup. De plus, si vous utilisez des microprocesseurs AMD ou Intel étant particulièrement rapide dans la manipulation des chaines de caractères par rapport à d'autres processeurs, vous aurez également des écartes de performances faussant le résultat de 1% ou 5% encore une fois. En revanche, si on s'attaque à la performance applicative et son architecture, on pourra avoir de bien meilleure résultat et cela même avec un code ayant des très mauvaises pratiques. L'algorithme est toujours plus importante que la syntaxe d'un code. Un exemple concret d'algorithme et performance applicative serait l'utilisation de cache à des endroits stratégiques. Vous avez dans ces situations des surprises de 200% ou 300% d'accélérations et vous n'avez qu'à changer que deux ou trois bout de code. Les accélérateurs de PHP jusqu'à la version de PHP 5 provoquait de bien plus grande différence de performance par exemple. L'utilisation de système de cache a aussi tendance a être plus prometteur qu'un syntaxe différente.
Si vraiment vous n'arrivez toujours pas avoir assez de performances, il faudra alors envisager d'utiliser un langage compilé comme Node.js ou compiler une extension PHP en C par exemple. Une chose est certaine, c'est qu'un débutant vous arrivant avec la conclusion que de bonne pratique de code résout tous vos problèmes de performances, relève clairement de la naïveté.
Voir également
Langage de programmation - HTML - Bonnes pratiques
Articles - Optimisation pour des sites à haut niveau de trafic