Loading ...
[Plus récent] [Plus ancien] [Meilleur rang] [Mauvais rang]

PCR Postit

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.