Найкраще загальне призначення - особливо короткі масиви (1000 предметів або менше) та кодери, які не знають, які оптимізації найкраще відповідають їх потребам.
# $value can be any regex. be safe
if ( grep( /^$value$/, @array ) ) {
print "found it";
}
Згадано, що grep проходить через усі значення, навіть якщо перше значення в масиві відповідає. Це правда, однак греп все ще надзвичайно швидкий у більшості випадків . Якщо ви говорите про короткі масиви (менше 1000 елементів), то в більшості випадків більшість алгоритмів будуть досить швидкими. Якщо ви говорите про дуже довгі масиви (1 000 000 елементів), grep прийнятно швидкий, незалежно від того, елемент є першим чи середнім чи останнім у масиві.
Випадки оптимізації для довших масивів:
Якщо ваш масив відсортований , використовуйте "двійковий пошук".
Якщо один і той же масив багато разів шукають , скопіюйте його спочатку в хеш, а потім перевірте хеш. Якщо пам'ять викликає занепокоєння, то перемістіть кожен елемент з масиву в хеш. Більш ефективна пам'ять, але знищує вихідний масив.
Якщо одні і ті ж значення повторно шукаються в масиві, лінь будуйте кеш. (як кожен елемент пошуку, спочатку перевірте, чи зберігався результат пошуку в збереженому хеші. Якщо результат пошуку не знайдено в хеші, тоді шукайте масив і вкладайте результат у збережений хеш, щоб наступного разу ми знайдіть його в хеші та пропустіть пошук).
Зауважте: ці оптимізації будуть швидшими лише при роботі з довгими масивами. Не надмірно оптимізуйте.