19.Mesure de temps d'exécution (benchmark) d'une fonction PHP

19.1.Introduction

Au cours de vos développements, vous serez peut-être amenés à vous demander comment réduire les délais d'exécution de vos scripts PHP. Vous trouverez peut-être des solutions à mettre en place. Et si tel est le cas, vous devrez vous assurer que la solution mise en place réduit effectivement les temps de réponse. Pour cela, vous devrez donc mesurer les délais d'exécution et tant qu'à faire avec le plus de fiabilité possible.
Mesurer le temps d'exécution n'est pas bien difficile pour cela les fonctions time() et microtime() couvrent très bien le besoin. Mais si l'on souhaite obtenir un temps d'exécution significatif (i.e. le moins possible influencé par les aléas des ralentissements du système) il faut multiplier les mesures, en extraire une moyenne voire un écart-type (pour juger de la validité) et enfin il peut être intéressant d'enregistrer les valeurs obtenues pour voir l'impact d'un environnement à l'autre, d'une implémentation à l'autre et pourquoi pas intégrer tout cela dans un processus de génération. Dans ce cas, il est préférable de faire appel à un outil dédié à la mesure (benchmarking) comme PHPBench.

19.2.Méthode basique

19.2.1.Méthode basique avec time()

Pour mesurer le délai d'exécution d'une fonction maFonction() avec la fonction time(), le script suivant peut faire l'affaire à supposer que le temps d'exécution soit de plusieurs secondes.
<?php
$t0 = time();
maFonction();
$t1 = time();
?>
La fonction a pris <?php echo $t1-$t0;?> seconde(s) pour s'exécuter

19.2.2.Méthode basique avec microtime()

Pour une précision accrue de la mesure du délai d'exécution, il sera préférable de faire appel à la fonction microtime(). Nous prendrons soin de passer true en paramètre afin d'obtenir le timestamp sous forme décimale (et non pas une chaîne de caractères comme proposé par défaut)
<?php
$t0 = microtime(true);
maFonction();
$t1 = microtime(true);
?>
La fonction a pris <?php echo $t1-$t0;?> seconde(s) pour s'exécuter