1250 dizgiyi 90k biçimle eşleştirmek neden bu kadar yavaş?


12

Dizelerim dosya yolları s/14/11/13/15/n7ce49B_235_25ed2d70.jpg; benim desenlerim oldukça basit, hepsi gibi n7ce49B_.+.

Koşuyorum GNU grep 2.6.3altında Debian 6.0.10 tarihinde Dell DL360G7 sunucusuna 15k HDD ve bu komutla (Sadece bu makine perfomance duygusu vermek için söz): time LC_ALL=C grep -E -f path_to_patterns_file path_to_strings_fileSadece tamamlanamıyor - sunucu takaslarını çok kötü. 20k desenleri ile 3 saatten fazla sürer.

Bu bana mantıksız geliyor.

Yorum isteği başına, dosyalar vardır: dosya yolları 20k kalıpları

Ayrıca, giriş çizgileri ve kalıplarının sayısını aşağıdakilerle test edebilir ve ayarlayabilirsiniz:

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

3
başlığınız var 90k, açıklamanın 20Kdesenleri var
RomanPerekhrest

2
90k benim orijinal girdi boyutum ve makinemi o kadar zor değiştiriyor ki o grep'i öldürmem gerekiyor. Sonra bunu 20k dosyaya bölmeye çalıştım ve hala korkunç bir şekilde çalışıyor ... Ama açıklamamın tutarsız olduğunu haklısın.
skaurus

2
Lütfen sırasında sunucunun aşırı vergi verilip verilmediğini (başka bir kaynak aç görevini yaparken) açıklığa kavuşturun grep.
agc

2
Kişi üreyebilir xxd -p /dev/urandom | fold -sw 100 | head -n 1250 | grep -Ef <(xxd -p /dev/urandom | fold -sw 10 | head -n 20000). Normal ifadeleri derlemek ve çok fazla bellek ayırmak için zaman harcanmış gibi görünüyor. Bunun -Fyerine, -Eanlık.
Stéphane Chazelas

2
Bu konuda, bu n7ce49B_.+eşdeğer değiln7ce49B_.
Stéphane Chazelas

Yanıtlar:


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.