10 votes

Mesure des performances de PHP

Comment puis-je évaluer certains éléments de code en PHP ? Je peux utiliser des timers pour calculer les différences, mais je ne suis pas sûr que ce soit la meilleure solution.

7voto

Sarfraz Points 168484

Jetez un coup d'œil à XDebug Profiler pour évaluer les performances et plus encore.

Le Profiler de Xdebug est un outil puissant qui vous donne la possibilité d'analyser votre code PHP et de déterminer les goulots d'étranglement ou, plus généralement, de voir quelles parties de votre code sont lentes et pourraient et qui pourraient être améliorées.

3voto

VolkerK Points 54118

Vous pouvez utiliser un Profileur comme celui qui est intégré dans Xdebug .

1voto

Guillermo Points 438

XDebug est cool mais si vous ne voulez pas installer cette bibliothèque, vous pouvez essayer ce qui suit :

Ce que j'utilise pour localiser les goulots d'étranglement possibles, c'est :

$benchmark_start = microtime(true);
// Code goes here
$benchmark_stop = microtime(true);
$benchmark_total = $benchmark_stop - $benchmark_start;
echo "The script took ". $benchmark_total." seconds";

1voto

Un exemple un peu plus sophistiqué de profilage manuel utilisant des timers
fonctionne parfaitement pour moi, surtout quand on me demande de régler des choses sur un serveur en direct avec un accès FTP uniquement.
Il va sans dire que le profilage est bien plus important (et utile) sur un serveur en direct que sur le PC d'un développeur.

$TIMER['start']=microtime(TRUE);
// some code
$query="SELECT ...";
$TIMER['before q']=microtime(TRUE);
  $res=mysql_query($query);
$TIMER['after q']=microtime(TRUE);  
  while ($row = mysql_fetch_array($res)) {
// some code
  }
$TIMER['array filled']=microtime(TRUE);  
// some code
$TIMER['pagination']=microtime(TRUE);  

if ('127.0.0.1' === $_SERVER['REMOTE_ADDR']) { //I set my IP here
  echo "<table border=1><tr><td>name</td><td>so far</td><td>delta</td><td>per cent</td></tr>";
  reset($TIMER);
  $start=$prev=current($TIMER);
  $total=end($TIMER)-$start;
  foreach($TIMER as $name => $value) {
    $sofar=round($value-$start,3);
    $delta=round($value-$prev,3);
    $percent=round($delta/$total*100);
    echo "<tr><td>$name</td><td>$sofar</td><td>$delta</td><td>$percent</td></tr>";
    $prev=$value;
  }
    echo "</table><>";
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X