স্টিভের দুর্দান্ত উত্তর যুক্ত করতে।
এটি ব্যাপকভাবে পরিচিত নাও হতে পারে তবে গ্রাইপ প্রায় সবসময় দ্রুত হয় যখন সংক্ষিপ্তটির চেয়ে লম্বা প্যাটার্ন-স্ট্রিংয়ের জন্য গ্রেপিং করা হয় , কারণ দীর্ঘতর প্যাটার্নে বায়ার-মুর আরও ভাল সাবলাইনারের গতি অর্জনের জন্য লম্বা ধাপে এগিয়ে যেতে পারেন :
উদাহরণ:
# after running these twice to ensure apples-to-apples comparison
# (everything is in the buffer cache)
$ time grep -c 'tg=f_c' 20140910.log
28
0.168u 0.068s 0:00.26
$ time grep -c ' /cc/merchant.json tg=f_c' 20140910.log
28
0.100u 0.056s 0:00.17
আর লম্বা ফর্মটি 35% দ্রুত!
কিভাবে? বায়ার-মুর প্যাটার্ন-স্ট্রিং থেকে একটি স্কিপ-ফরোয়ার্ড টেবিল তৈরি করে এবং যখনই কোনও অমিল থাকে, স্কিপ টেবিলের ইনপুটটিতে একক চরকে তুলনা করার আগে এটি সম্ভব দীর্ঘতম স্কিপটিকে (শেষ চর থেকে প্রথম দিকে) বেছে নেয়।
বায়ার মুরকে ব্যাখ্যা করার জন্য এখানে একটি ভিডিও রয়েছে (কমড্রহোমারে ক্রেডিট)
আর একটি সাধারণ ভুল ধারণা (জিএনইউ গ্রেপের জন্য) এটি এর fgrepচেয়ে দ্রুত grep। fমধ্যে fgrepজন্য 'ফাস্ট' স্ট্যান্ড না, এটি 'সংশোধন' (man পৃষ্ঠা দেখুন) ঘোরা এবং যেহেতু উভয় একই অনুষ্ঠানে, এবং উভয় ব্যবহার হয় বুইয়ার মুর , সেখানে তাদের মধ্যে গতিতে কোনো পার্থক্য যখন fixed- অনুসন্ধানের জন্য এর রেজিএক্সপ্যাক্ট বিশেষ অক্ষর ছাড়াই স্ট্রিং। একমাত্র কারণ আমি ব্যবহারের fgrepযখন কোন RegExp বিশেষ গৃহস্থালির কাজ হয় (যেমন ., []অথবা *) আমি না এটা যেমন হিসেবে ব্যাখ্যা করা যেতে চাই। এবং তারপরেও আরও পোর্টেবল / স্ট্যান্ডার্ড ফর্মটি grep -Fপছন্দ করা হয় fgrep।