En iyi genel amaç - Özellikle hangi optimizasyonların ihtiyaçlarına en uygun olduğundan emin olmayan kısa diziler (1000 veya daha az öğe) ve kodlayıcılar.
# $value can be any regex. be safe
if ( grep( /^$value$/, @array ) ) {
print "found it";
}
Dizideki ilk değer eşleşse bile grep'in tüm değerlerden geçtiği belirtilmiştir. Bu doğrudur, ancak grep çoğu durumda hala çok hızlıdır . Kısa dizilerden (1000 öğeden az) bahsediyorsanız, algoritmaların çoğu zaten oldukça hızlı olacaktır. Çok uzun dizilerden (1.000.000 öğe) bahsediyorsanız, öğenin dizideki ilk veya orta veya son olmasına bakılmaksızın grep kabul edilebilir derecede hızlıdır.
Daha uzun diziler için Optimizasyon Durumları:
Diziniz sıralanırsa , "ikili arama" kullanın.
Eğer aynı dizi tekrar tekrar aranır defalarca, ilk olarak bir karma kopyalayın ve daha sonra karma kontrol edin. Bellek bir sorunsa, diziden her öğeyi karmaya taşıyın. Daha verimli bellek ama orijinal diziyi yok eder.
Eğer aynı değerler defalarca arandığını dizinin içinde, tembel bir önbellek oluşturmak. (her öğe aranırken, önce arama sonucunun kalıcı bir karma içinde saklanıp saklanmadığını kontrol edin. arama sonucu karma içinde bulunmazsa, diziyi arayın ve sonucu kalıcı hash içine koyun, böylece bir dahaki sefere hash içinde bulun ve aramayı atlayın).
Not: Bu optimizasyonlar yalnızca uzun dizilerle uğraşırken daha hızlı olacaktır. Aşırı optimizasyon yapmayın.