Najlepszy ogólny cel - szczególnie krótkie tablice (1000 elementów lub mniej) i kodery, które nie są pewne, jakie optymalizacje najlepiej odpowiadają ich potrzebom.
# $value can be any regex. be safe
if ( grep( /^$value$/, @array ) ) {
print "found it";
}
Wspomniano, że grep przechodzi przez wszystkie wartości, nawet jeśli pierwsza wartość w tablicy jest zgodna. To prawda, jednak grep jest nadal bardzo szybki w większości przypadków . Jeśli mówisz o krótkich tablicach (mniej niż 1000 pozycji), większość algorytmów i tak będzie dość szybka. Jeśli mówisz o bardzo długich tablicach (1 000 000 przedmiotów), grep jest akceptowalnie szybki, niezależnie od tego, czy element jest pierwszym, środkowym czy ostatnim w tablicy.
Przypadki optymalizacji dla dłuższych tablic:
Jeśli tablica jest posortowana , użyj „wyszukiwania binarnego”.
Jeśli ta sama tablica jest wielokrotnie przeszukiwana , najpierw skopiuj ją do skrótu, a następnie sprawdź skrót. Jeśli problemem jest pamięć, przenieś każdy element z tablicy do skrótu. Bardziej wydajna pamięć, ale niszczy oryginalną macierz.
Jeśli te same wartości są wielokrotnie wyszukiwane w tablicy, leniwie zbuduj pamięć podręczną. (podczas wyszukiwania każdego elementu najpierw sprawdź, czy wynik wyszukiwania został zapisany w utrwalonym haszu. jeśli wynik wyszukiwania nie zostanie znaleziony w haszu, następnie przeszukaj tablicę i umieść wynik w hasze utrwalonej, aby następnym razem znajdź go w haszu i pomiń wyszukiwanie).
Uwaga: te optymalizacje będą szybsze tylko w przypadku długich tablic. Nie przesadnie optymalizuj.