Cette question est simplement pour moi car j'aime toujours écrire du code optimisé qui peut également fonctionner sur des serveurs lents bon marché (ou des serveurs avec BEAUCOUP de trafic)
J'ai regardé autour de moi et je n'ai pas pu trouver de réponse. Je me demandais ce qui est le plus rapide entre ces deux exemples en gardant à l'esprit que les clés du tableau dans mon cas ne sont pas importantes (pseudo-code naturellement):
<?php
$a = array();
while($new_val = 'get over 100k email addresses already lowercased'){
if(!in_array($new_val, $a){
$a[] = $new_val;
//do other stuff
}
}
?>
<?php
$a = array();
while($new_val = 'get over 100k email addresses already lowercased'){
if(!isset($a[$new_val]){
$a[$new_val] = true;
//do other stuff
}
}
?>
Comme le point de la question n'est pas la collision de tableaux, je voudrais ajouter que si vous avez peur de heurter des insertions pour $a[$new_value]
, vous pouvez utiliser $a[md5($new_value)]
. cela peut toujours provoquer des collisions, mais enlèverait une éventuelle attaque DoS lors de la lecture d'un fichier fourni par l'utilisateur ( http://nikic.github.com/2011/12/28/Supercolliding-a-PHP-array.html )