GNU grep jest szybki, ponieważ UNIKANIE PATRZENIA NA KAŻDY WPROWADZONY BIT.
GNU grep jest szybki, ponieważ WYKONUJE BARDZO KILKA INSTRUKCJI DLA KAŻDEGO BITTU, na
który patrzy.
GNU grep używa dobrze znanego algorytmu Boyera-Moore'a, który najpierw szuka ostatniej litery ciągu docelowego i używa tabeli przeglądowej, aby powiedzieć, jak daleko do przodu może pominąć dane wejściowe, gdy znajdzie niepasujący znak.
GNU grep rozwija również wewnętrzną pętlę Boyer-Moore i ustawia wpisy tablicy delta Boyera-Moore'a w taki sposób, że nie musi wykonywać testu wyjścia pętli na każdym rozwiniętym kroku. Wynikiem tego jest to, że w ramach limitu GNU grep uśrednia mniej niż 3 instrukcje x86 wykonywane dla każdego bajtu wejściowego, na który faktycznie patrzy (i całkowicie pomija wiele bajtów).
GNU grep używa surowych wywołań systemowych systemu Unix i unika kopiowania danych po ich odczytaniu. Co więcej, GNU grep UNIKANIE ŁAMANIA WEJŚCIA NA LINIE. Szukanie nowych linii spowolniłoby grep kilka razy, ponieważ aby znaleźć nowe linie, musiałby spojrzeć na każdy bajt!
Więc zamiast korzystać z wejścia zorientowanego liniowo, GNU grep czyta surowe dane do dużego bufora, przeszukuje bufor używając Boyer-Moore i tylko wtedy, gdy znajdzie dopasowanie, idzie i szuka ograniczających znaki nowej linii (niektóre opcje wiersza poleceń, takie jak - n wyłącz tę optymalizację.)