Мої рядки - це файлові контури на зразок s/14/11/13/15/n7ce49B_235_25ed2d70.jpg; мої візерунки досить прості, всі подобаються n7ce49B_.+.
Я працюю GNU grep 2.6.3під Debian 6.0.10 на сервері Dell DL360G7 (я згадую це лише для того, щоб дати відчуття цієї машинної продуктивності) з 15-ти кілометровими дисками, і ця команда: 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)
grep.
xxd -p /dev/urandom | fold -sw 100 | head -n 1250 | grep -Ef <(xxd -p /dev/urandom | fold -sw 10 | head -n 20000). Схоже, час витрачається на збирання реджексів і виділення багато пам’яті. З -Fзамість цього -E, це миттєво.
n7ce49B_.+n7ce49B_.
90k, в описі є20Kвізерунки