©
. Document créé le 16 octobre 2010 , mis à jour le 9 septembre 2011.Si perçante soit la vue, on ne se voit jamais de dos. Proverbe chinois
Accueil du site > Astuces > PHP > Optimiser son code PHP (boucle foreach ou while/list)
Il n’est pas rare de voir sur la toile des tests et autres comparatifs de code PHP. Bien souvent, l’article ne mentionne :
Un billet rencontré dernièrement prétend qu’une boucle while/list est plus efficace qu’un foreach. Vérifions en quelques lignes de code.
Deux méthodes pour parcourir un tableau tout en récupérant les clés/valeurs :
De ces deux méthodes, laquelle est la plus efficiente, la plus rapide.
Exemple :
<?php
$tableau = array();
$cc = 0;
while($cc < 10000)
{
$tableau[$cc] = $cc;
$cc++;
}
$res = array('foreach' => array()
, 'list' => array());
$nb = 3;
for($ii = 0; $ii < $nb; $ii++)
{
$start = microtime(1);
foreach($tableau as $k => $v)
{
// rien
}
$res['foreach'][$ii] = microtime(1) - $start;
reset($tableau);
$start = microtime(1);
while(list($k, $v) = each($tableau))
{
// rien
}
$res['list'][$ii] = microtime(1) - $start;
}
echo('foreach: '
.implode("\t", $res['foreach'])
."\t"
.(array_sum($res['foreach'])/$nb)
.PHP_EOL);
echo('list : '
.implode("\t", $res['list'])
."\t"
.(array_sum($res['list'])/$nb)
.PHP_EOL);
?>
Qui donne comme résultat sur mac mini Darwin Kernel Version 10.4.0/PHP 5 :
1 | 2 | 3 | Average | |
foreach : | 0.0011861324310303 | 0.0020849704742432 | 0.0011961460113525 | 0.0014890829722087 |
list : | 0.01590895652771 | 0.010294198989868 | 0.010754108428955 | 0.012319087982178 |
Donc un foreach() plus rapide.
Les forums sont fermés.