Migliore scopo generale - In particolare array brevi (1000 articoli o meno) e programmatori che non sono sicuri di quali ottimizzazioni soddisfino meglio le loro esigenze.
# $value can be any regex. be safe
if ( grep( /^$value$/, @array ) ) {
print "found it";
}
È stato menzionato che grep passa attraverso tutti i valori anche se il primo valore nella matrice corrisponde. Questo è vero, tuttavia grep è ancora estremamente veloce nella maggior parte dei casi . Se stai parlando di array corti (meno di 1000 articoli), la maggior parte degli algoritmi sarà comunque abbastanza veloce. Se stai parlando di array molto lunghi (1.000.000 di articoli), grep è accettabilmente veloce indipendentemente dal fatto che l'articolo sia il primo o il mezzo o l'ultimo dell'array.
Casi di ottimizzazione per array più lunghi:
Se il tuo array è ordinato , usa una "ricerca binaria".
Se lo stesso array viene ripetutamente cercato più volte, copiarlo prima in un hash e quindi controllare l'hash. Se la memoria è un problema, sposta ciascun elemento dall'array nell'hash. Più memoria efficiente, ma distrugge l'array originale.
Se gli stessi valori vengono cercati ripetutamente all'interno dell'array, creare pigramente una cache. (mentre ogni elemento viene cercato, controlla prima se il risultato della ricerca è stato memorizzato in un hash persistente. Se il risultato della ricerca non viene trovato nell'hash, quindi cerca l'array e inserisci il risultato nell'hash persistente in modo che la prossima volta trovalo nell'hash e salta la ricerca).
Nota: queste ottimizzazioni saranno più veloci solo quando si gestiscono array lunghi. Non ottimizzare eccessivamente.