// 2007/07/30 17:04 / 90.1.187.152

Profiler le code


→ ajouter une fonction et ses appels à des endroits stratégiques

   function profile ($txt,$dump=FALSE)
   {
      static $times;
      if ($dump)
      {
         if (!file_exists("perfs.log"))
         {
            $f = fopen("perfs.log","w");
            for ($i=1;$i<sizeof($times);$i++)
               fwrite($f,sprintf("%s:",$times[$i][0])); // header
            fwrite($f,"\n");
         }
         else
            $f = fopen("perfs.log","a");
         for ($i=1;$i<sizeof($times);$i++)
            fwrite($f,sprintf("%f:",$times[$i][1]-$times[$i-1][1])); // valeurs
         fwrite($f,"\n");
         fclose($f);
      }
      else
      {
         list($usec, $sec) = explode(" ", microtime());
         $times[] = array($txt,((float)$usec + (float)$sec));
      }
   }
   profile("Debut");

   ...
   profile("Traitement");

   ...
   profile("Formatage");

   ...
   profile("",TRUE);



→ on obtient le résultat dans le fichier perfs.log :
Traitement:Formatage:
0.027288:0.407159:
0.027298:0.453744:
0.032468:0.444973:
0.025138:0.446650:


Obtenir les perfs


Voici un petit script pour collecter les données en affichage :
#!/bin/bash
url="http://localhost/tw/?page=TestSpeed"
i=0
nb=20
while [ "$i" -lt "$nb" ]
do
   echo "$i"
   wget -q -O /dev/null "$url"
   i=`expr $i + 1`
done
wget -q -O - ${url%\?*}perfs.log

Il faut bien sur remplacer la variable url par la page à tester.

Axes d'améliorations