Tests de performance
Par Paul de Rosanbo, mardi 19 octobre 2004 à 01:09 :: Code :: #19 :: rss
Voici un test de performance pour choisir la meilleure syntaxe à employer dans une classe PHP sur une fonction qui parcours un tableau de valeurs avec un appel pour chaque valeur du tableau. Pour réaliser des api, moteurs de templates, etc...
le code utilisé pour le test :
<?php
class test
{
function test()
{
$this->arr = range(0, 100000);
$this->cnt = count($this->arr);
}
function loop1()
{
static $i = 0;
if ($i < $this->cnt)
{
$this->v = & $this->arr$i;
$i++;
return true;
}
else
{
return false;
}
}
function loop2()
{
return list(,$this->v) = each($this->arr);
}
function loop3()
{
$this->v = & current($this->arr);
if ($this->v !== false)
{
next($this->arr);
return true;
}
else
return false;
}
function loop4()
{
return (false !== $this->v = & current($this->arr) && next($this->arr));
}
function getExecutionTime($func)
{
$time_start = microtime_float();
while( $this->$func() );
$time_end = microtime_float();
$time = $time_end - $time_start;
echo '<h1>'.$func.' : '.$time.'</h1>';
reset($this->arr);
}
}
function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
// main
$test = new test();
$test->getExecutionTime('loop1');
$test->getExecutionTime('loop2');
$test->getExecutionTime('loop3');
$test->getExecutionTime('loop4');
?>
Les résultats pour les 4 fonctions :
- loop1 : 0.858052968979
- loop2 : 0.82940196991
- loop3 : 0.871843099594
- loop4 : 0.780961036682
Dans la fonction 3 le paramètre & ne fait apparemment aucun effets, les temps sont identiques avec ou sans. Alors que dans la fonction 4 le & est indispensable.
Remarque : Ceci n'est pas le genre de fonction a utiliser si on doit juste parcourir un tableau, ce n'est pas le but de cet article
Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.