PHP
::Tester rapidement l'existence d'un élément dans un tableau plus rapidement que in_array
[Trackback]
Date : 2007-06-13@11:18:03
Rang : 0
Bien sur en php tout le monde utilise la fonction in_array mais une petite astuce permet de le faire plus rapidement via les index des tableau.
Normal car la fonction in_array parcourt le tableau alors que le test de l'existence de l'index accède directement à l'élément.
$arrIndex = array('1'=>true,'2'=>true,'3'=>true,'4'=>true);
$arr = array('1','2','3','4');
$start = time()+microtime();
for ($i=0;$i<10000;$i++)
{
isset($arrIndex['1']);
}
var_dump(time()+microtime()-$start);
$start = time()+microtime();
for ($i=0;$i<10000;$i++)
{
in_array('1',$arr);
}
var_dump(time()+microtime()-$start);
Résultat du benchmark :
0.009213924407959 secondes pour le isset
0.15566611289978 secondes pour le in_array
Soit 17 fois plus rapide Enjoy ;-)
Remarques :
- Cette astuce ne convient pas à tous les tableaux, vous noterez que le tableau arrIndex est spécial.
- Isset est plus rapide que array_key_exist mais ne se comporte pas de la même manière sur des tableaux ayant des valeurs null ce qui est normal.
