90k ধরণের বিপরীতে 1250 স্ট্রিংয়ের মিল কেন এত ধীর?


12

আমার স্ট্রিংগুলি ফাইল পাথের মতো s/14/11/13/15/n7ce49B_235_25ed2d70.jpg; আমার নিদর্শনগুলি বেশ সহজ, সমস্ত পছন্দ n7ce49B_.+

আমি চলছি GNU grep 2.6.3অধীনে ডেবিয়ান 6.0.10 তে ডেল DL360G7 : সার্ভারে (আমি এটা উল্লেখ শুধু এই মেশিন perfomance একটা ধারনা দিতে) 15k HDDs, এবং এই আদেশের সঙ্গে time LC_ALL=C grep -E -f path_to_patterns_file path_to_strings_fileখুব খারাপভাবে সার্ভার অদলবদল - শুধু সম্পূর্ণ করতে পারেন না। 20 কে নিদর্শন সহ এটি 3 ঘন্টারও বেশি সময় নেয়।

এটা আমার কাছে অযৌক্তিক বলে মনে হচ্ছে।

প্রতি মন্তব্য অনুরোধের জন্য, ফাইলগুলি রয়েছে: 20k ধরণের ফাইলের পথ

এক সাথে ইনপুট লাইন এবং নিদর্শনগুলির সংখ্যা পরীক্ষা ও সমন্বয় করতে পারে:

xxd -p /dev/urandom | fold -sw 100 | head -n 1250 |
  grep -Ef <(xxd -p /dev/urandom | fold -sw 10 | head -n 20000)

3
আপনার শিরোনামটিতে আছে 90k, বর্ণনায় 20Kনিদর্শন রয়েছে
রোমানপ্রেখারেস্ট

2
ঠিক আছে, 90 কে আমার মূল ইনপুট আকার এবং এটি আমার মেশিনকে এত শক্ত করে তোলে যে আমাকে সেই গ্রেপটি মেরে ফেলতে হবে। তারপরে আমি এটিকে 20 কে ফাইলগুলিতে বিভক্ত করার চেষ্টা করেছি এবং এটি এখনও মারাত্মকভাবে কাজ করে ... তবে আপনি ঠিক বলেছেন যে আমার বিবরণটি বেমানান।
স্কোয়ারাস

2
দয়া করে স্পষ্ট করে দিন যে সার্ভারটি ওভারট্যাক্স হয়েছে কিনা (অন্য কোনও উত্সের ক্ষুধার্ত কাজগুলি করা হচ্ছে) চলাকালীন grep
এজিসি

2
এক সাথে পুনরুত্পাদন করতে পারেন xxd -p /dev/urandom | fold -sw 100 | head -n 1250 | grep -Ef <(xxd -p /dev/urandom | fold -sw 10 | head -n 20000)। দেখে মনে হচ্ছে সময়টি রেগেক্সপগুলি সংকলন করতে এবং প্রচুর স্মৃতি বরাদ্দ করতে ব্যয় করেছে। সঙ্গে -Fপরিবর্তে -E, এটা ক্ষণিক আছে।
স্টাফেন চেজেলাস

2
এই বিষয়গুলির জন্য, n7ce49B_.+এটি সমান নয়n7ce49B_.
স্টাফেন চেজেলাস

উত্তর:


15

আপনি এই প্রতিশ্রুতি দ্বারা সম্বোধন করা GNU গ্রেপ ( বাগ # 22357 ) এর পুরানো সংস্করণগুলির একটি পারফরম্যান্স সমস্যায় পড়েছিলেন , যদিও এই পরিবর্তনটি কিছু প্রতিস্থাপনের প্রবর্তন করেছিল , তবে আপনি তার পরিবর্তে GNU 3.0 বা আরও নতুন পেতে চান ।grep

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.