Optimisation PHP

Introduction

...

En développement, « penser simple » pour rendre les choses plus faciles à comprendre et à maintenir est la première des règles à connaître. La seconde consiste à maîtriser le ou les langages utilisés et à essayer d'en exploiter tout le potentiel. Cela nous amène à la troisième règle : l'optimisation du code.

PHP est un langage ayant plusieurs milliers de fonctions et de méthodes. Une telle richesse permet d'écrire le même algorithme en utilisant des instructions différentes. La question est : pourquoi utiliseriez-vous plus une instruction qu'une autre ? Tout simplement parce-que c'est plus performant et améliore le temps de réponse.

De Vincent SOYSOUVANH

L'objectif de l'optimisation du code PHP

L'objectif de l'optimisation PHP est d'améliorer la performance de l'application au niveau du code seulement. Cela implique de modifier le code si le besoin se fait ressentir, de remplacer une instruction par une autre instruction équivalente (ou un bloc de code) sachant que cette dernière serait plus rapide à accomplir la tâche souhaitée.

Il faut savoir qu'une optimisation de code ne vaut pas un bon algorithme bien pensé. C'est après avoir codé l'algorithme, qu'il est préférable de passer à l'optimisation du code si cela n'a pas déjà été fait en même temps, et non l'inverse.

Ces techniques d'optimisation ou astuces de programmation, permettent de gagner de précieuses millisecondes. Mis de bout en bout, cela peut représenter un gain de plus d'une demi-seconde, ce qui est énorme du point de vue temps machine. Cependant, faîtes attention à ne pas rentrer dans l'excès d'optimisation de code. En effet, vouloir trop en faire risque de nuire à la lisibilité du code et d'apporter une difficulté supplémentaire à sa maintenance, surtout lorsqu'il s'agit d'un projet en équipe.

Il n'appartient qu'à vous de juger de la nécessité de la mise en place d'une telle procédure. L'optimisation du code est un exercice avancé qui demande un effort de logique et une forte motivation. Les tests sont nombreux et peuvent démotiver plus d'un.

La technique utilisée pour la mesure de performance

Le script de mesure de performance

Pour mesurer la performance d'un script, nous pouvons utiliser un outil de benchmark. Mais pour mesurer le temps d'exécution d'une instruction ou d'un bloc de code, l'utilisation d'un simple script fait maison suffit très largement :

  1. <?php
  2. //Initialise les variables de travail
  3. //$i : compteur de boucle, la valeur est à changée si besoin
  4. $i = 1000000;
  5. //Marque le début du test
  6. $t1 = microtime(true);
  7. //Lance le test en bouclant $i fois le bloc de code à tester
  8. do {
  9. //Mettre ici le code à tester
  10. ...
  11. } while(--$i);
  12. //Marque la fin du test
  13. $t2 = microtime(true);
  14. //Affiche la durée du test en seconde
  15. echo $t2 - $t1, ' s.';
  16. ?>

Les conditions de test

Les tests qui suivent ont été réalisés sur un serveur Apache 2.4 avec PHP 5.4.7 en environnement Windows.
Chaque code à tester est itéré 1000000 fois dans un script séparé, donc possède son propre fichier de script, afin que tous les scripts soient exécutés dans les même conditions. Ces scripts sont tous lancés 10 fois pour pouvoir obtenir un résultat concluant.

Tests de performance et optimisation PHP

Les chaînes de caractères

  1. Quotte vs guillemet
  2. La concaténation de chaînes
  3. La recherche d'une sous-chaîne
  4. Le remplacement d'une sous-chaîne

L'écriture vers la sortie standard

  1. echo vs print

Les variables

  1. La déclaration et l'initialisation des variables
  2. La longueur des variables

Les tableaux

  1. isset vs in_array

Les structures de contrôle

  1. Les conditions : if, opérateur ternaire
  2. Les boucles : do, while, for, foreach

Les fichiers

  1. L'inclusion d'un fichier : requie, require_once, include, include_once
  2. L'existence d'un fichier : is_file, file_exists
  3. La lecture d'un fichier
  4. L'écriture dans un fichier

Les expressions régulières

  1. La vérification d'un expression
  2. La recherche
  3. Le remplacement

Les classes et objets

  1. Les méthodes getter et setter
  2. Méthode statique vs méthode de classe

Le résultat des tests de performance PHP

Les résultats peuvent être différents selon votre environnement de production, donc dépendent de ses caractéristiques :

  1. le type et la version du serveur d'application ;
  2. la version de PHP ;
  3. le type et la version du système d'exploitation ;
  4. la puissance et la capacité du serveur ;
  5. le type de disque de stockage (ex : SSD) ;
  6. etc.

Ces résultats ne peuvent être considérés comme étant une preuve répondant à une solution, mais apportent une certaine idée de ce que vous pouvez optimiser ou pas dans votre code. Des résultats affichant une meilleure performance sur un environnement avec une configuration donnée peuvent tout à fait donner des résultat inattendus sur un autre environnement avec une configuration différente.

Avant de vous lancer tête baissée sur l'optimisation de code, prenez le temps de :

  1. mettre à jour vos logiciels ou applications : système d'exploitation, serveur d'application, base de données, framework, PHP, etc. ;
  2. remettre en question les vieux serveurs, l'architecture, le framework, l'utilisation de web services, etc., pour préparer un futur projet ou une refonte ;
  3. contrôler la présence et l'activation d'un système de cache, ainsi que la bonne configuration du serveur ;
  4. revoir la conception et l'algorithme des parties dont vous souhaitez optimiser, et faire le plus simple possible ;
  5. vérifier le résultat de ces tests de performance directement sur l'environnement cible.

...

© Seocret.fr - A propos - Mentions légales - Contact