Meilleur usage général - Tableaux particulièrement courts (1000 éléments ou moins) et codeurs qui ne savent pas quelles optimisations répondent le mieux à leurs besoins.
# $value can be any regex. be safe
if ( grep( /^$value$/, @array ) ) {
print "found it";
}
Il a été mentionné que grep passe par toutes les valeurs même si la première valeur du tableau correspond. C'est vrai, cependant grep est toujours extrêmement rapide dans la plupart des cas . Si vous parlez de tableaux courts (moins de 1000 éléments), la plupart des algorithmes seront de toute façon assez rapides. Si vous parlez de tableaux très longs (1 000 000 éléments), grep est suffisamment rapide, que l'élément soit le premier, le milieu ou le dernier du tableau.
Cas d'optimisation pour les baies plus longues:
Si votre tableau est trié , utilisez une "recherche binaire".
Si le même tableau est recherché plusieurs fois à plusieurs reprises, copiez-le d'abord dans un hachage, puis vérifiez le hachage. Si la mémoire est un problème, déplacez chaque élément du tableau dans le hachage. Plus efficace en mémoire mais détruit la baie d'origine.
Si les mêmes valeurs sont recherchées à plusieurs reprises dans le tableau, créez paresseusement un cache. (comme chaque élément est recherché, vérifiez d'abord si le résultat de la recherche a été stocké dans un hachage persistant. si le résultat de la recherche n'est pas trouvé dans le hachage, puis recherchez dans le tableau et placez le résultat dans le hachage persistant de sorte que la prochaine fois nous le trouver dans le hachage et sauter la recherche).
Remarque: ces optimisations ne seront plus rapides que pour les tableaux longs. N'optimisez pas trop.