String saya adalah path file seperti s/14/11/13/15/n7ce49B_235_25ed2d70.jpg
; polanya cukup sederhana, semuanya suka n7ce49B_.+
.
Aku berlari GNU grep 2.6.3
di bawah Debian 6.0.10 pada Dell DL360G7 Server (saya menyebutkan itu hanya untuk memberikan rasa mesin kinerja ini) dengan 15k HDD, dan perintah ini: time LC_ALL=C grep -E -f path_to_patterns_file path_to_strings_file
hanya tidak bisa lengkap - swap Server terlalu parah. Dengan pola 20k dibutuhkan lebih dari 3 jam.
Bagi saya itu tidak masuk akal.
Per permintaan komentar, ada file: path file pola 20k
Seseorang juga dapat menguji dan menyesuaikan jumlah garis dan pola input dengan:
xxd -p /dev/urandom | fold -sw 100 | head -n 1250 |
grep -Ef <(xxd -p /dev/urandom | fold -sw 10 | head -n 20000)
90k
, deskripsi memiliki20K
polagrep
.xxd -p /dev/urandom | fold -sw 100 | head -n 1250 | grep -Ef <(xxd -p /dev/urandom | fold -sw 10 | head -n 20000)
. Sepertinya waktu dihabiskan untuk menyusun regexps dan mengalokasikan banyak memori. Dengan-F
alih-alih-E
, itu instan.n7ce49B_.+
setara dengann7ce49B_.
Jawaban:
Anda mengalami masalah kinerja dalam versi lama GNU grep ( bug # 22357 ) yang ditangani oleh komit ini , dirilis pada 2.28 meskipun perubahan itu memperkenalkan beberapa regresi , jadi Anda ingin mendapatkan GNU
grep
3.0 atau yang lebih baru sebagai gantinya.sumber