GNU grep तेज़ है क्योंकि यह हर बार BYTE पर नज़र रखता है।
क्योंकि यह प्रत्येक बाइट कि इसके लिए कार्यान्वित बहुत कुछ निर्देश जीएनयू ग्रेप तेज है
करता है पर देखो।
GNU grep जाने-माने बॉयर-मूर एल्गोरिथ्म का उपयोग करता है, जो पहली बार लक्ष्य स्ट्रिंग के अंतिम अक्षर के लिए दिखता है, और यह देखने के लिए एक लुकअप तालिका का उपयोग करता है कि यह बताए कि जब भी यह गैर-मिलान वर्ण पाता है तो इनपुट में इसे कितना आगे छोड़ सकता है।
GNU grep, Boyer-Moore के आंतरिक लूप को भी अनियंत्रित करता है, और Boyer-Moore डेल्टा तालिका प्रविष्टियों को इस तरह सेट करता है कि उसे हर अनियंत्रित कदम पर लूप निकास परीक्षण करने की आवश्यकता नहीं होती है। इसका परिणाम यह है कि, सीमा में, GNU grep का औसत 3 x86 निर्देशों से कम है जो प्रत्येक इनपुट बाइट के लिए निष्पादित होता है, यह वास्तव में दिखता है (और यह पूरी तरह से कई बाइट्स को छोड़ देता है)।
GNU grep कच्चे यूनिक्स इनपुट सिस्टम कॉल का उपयोग करता है और इसे पढ़ने के बाद डेटा को कॉपी करने से बचता है। इसके अलावा, GNU grep AVOIDS INPUT लाइनों में ले जा रहा है। नई सुर्खियों की तलाश कई बार एक कारक के कारण धीमी हो जाएगी, क्योंकि नई सूचियों को खोजने के लिए इसे हर बाइट को देखना होगा!
इसलिए लाइन-ओरिएंटेड इनपुट का उपयोग करने के बजाय, GNU grep एक बड़े बफर में कच्चे डेटा को पढ़ता है, बॉयर-मूर का उपयोग करके बफर को खोजता है, और केवल जब यह एक मैच पाता है तो यह बाउंडिंग नईलाइन्स (कुछ कमांड लाइन विकल्प) की तलाश करता है n इस अनुकूलन को अक्षम करें।)