LINUX.ORG.RU

grep -i медленно работает


0

2

Надо было прошерстить венник, запустил grep -ri и получил феерические тормоза: 99% cpu при абсолютно ненагруженном веннике. Погуглил, наткнулся на sgrep, но он ключ -r не понимает. Ack ставить не хочу, он нереально у меня глючил пару лет назад. Тем более что он по бенчам в 4 раза медленнее grep.

Что бы такое поставить вместо grep?

★★★★★

Не мучь греп, пусть шелл сам разворачивает дерево вложенных каталогов

grep -i pussward **/*.txt

zolden ★★★★★
()

судя по бенчмаркам в гугле, заметно быстрее будет только если на асме накатать ;)

anonymous
()

>ключ -r не понимает.

Стало быть про find $dir -type f -print0 | xargs -0 grep -i pattern ты не знаешь? Ъ одмин, лол.

anonymous
()

fgrep заметно быстрее работает =)

fr_butch
()
Ответ на: комментарий от anonymous

Ъ одмин, лол.

лол, оно не поможет, проблема в -i.

true_admin ★★★★★
() автор топика
Ответ на: комментарий от sdio

grep -i

Я понимаю что преобразование к одному регистру сжирает ресурсы, но не настолько же... Тем более что я по ascii грепаю, вот бы ключик был чтобы вырубить. LANG=C тоже не помог.

Вот так на порядок быстрее: find ~/Downloads/ -exec cat {} \; | tr A-Z a-z | grep pattern

А вот так почему-то не пашет: find ~/Downloads/ | xargs cat | tr A-Z a-z | grep pattern

true_admin ★★★★★
() автор топика
Ответ на: комментарий от MKuznetsov

recoll

не, спасибо, это жесточайший оверкилл :)

true_admin ★★★★★
() автор топика
Ответ на: комментарий от true_admin

Вот так на порядок быстрее: find

При таких вариантах ты не узнаешь в каком файле найден pattern

LANG=C тоже не помог

Странно. Я проверял, разница заметна.

А шаблон какой? Насколько сложный?

sdio ★★★★★
()
Ответ на: комментарий от sdio

Пруф, будьте добры.
Про первый пункт мне естественно самому виднее что я говорил (больше не лезь ко мне в голову, чёртов телепат!), что касается второго пункта, то с интересом взгляну на ваш обзор исходников 4го баша и /etc/bashrc всех существующих дистрибутивов.
Желательно с обильными комменариями и картинками
Спасибо

zolden ★★★★★
()
Ответ на: комментарий от sdio

Хорошо, но только ты пообещай, что я получу взамен много респектов, в случае победы, хорошо?
И ещё поклянись, что ты твёрдо убеждён, что изменение одной опции шелла не стоит десятикратного прироста производительности

zolden ★★★★★
()
Ответ на: комментарий от zolden

И ещё поклянись, что ты твёрдо убеждён, что изменение одной опции шелла не стоит десятикратного прироста производительности

рекурсивный обход средствами шела не может дать прироста производительности. У ТС тормозит regex grep'a из-за UTF-8 и регистронезависимого поиска.

И согласись что ты в каждый топик с башем приходишь и рекламируешь zsh, как iZEN — zfs. А это утомляет и раздражает. Хочешь чтобы тебя начали троллить, продолжай.

sdio ★★★★★
()
Ответ на: комментарий от sdio

Поддержка рекурсивного глоббинга появилась в баше почти 3 года назад, при чём тут вообще zsh?
Я понимаю твою склонность к совместимости и стандартам, про которую ты кричишь в каждом топике, но нет не понимаю

zolden ★★★★★
()
Ответ на: комментарий от sdio

Я проверял, разница заметна.

Я смотрел на глаз, всё равно было слишком долго. Мне интересен выигрыш в несколько порядков.

Главное я, после того как немного натаскался в кэшах итп, понимаю что сделать io-bound алгоритм case-insensitive поиска раз пукнуть :(.

А шаблон какой? Насколько сложный?

grep -ir 'cache coloring' ~/Downloads

Где Downloads это папка на пару сотен метров. Да даже если на десяток гиг, у мну ssd, блин :(

true_admin ★★★★★
() автор топика
Ответ на: комментарий от true_admin

Файл 89Мб. Кол-во строк (заодно и закешируем)

$ wc -l time.20090209
3345094

$ export LANG=en_US.utf8

этот шаблон в последних 5 строках
$ time grep -i '23:49:57 10.106.31.68 ulf5c' time.20090209
real 12 sec (несколько запусков)

без -i
$ time grep '23:49:57 10.106.31.68 ulf5c' time.20090209
real 0.15 sec (несколько запусков)

$ export LANG=C

$ time grep -i '23:49:57 10.106.31.68 ulf5c' time.20090209
real 0.25 sec (несколько запусков)

И опять
$ export LANG=en_US.utf8

$ time grep -i '23:49:57 10.106.31.68 ulf5c' time.20090209
real    0m12.681s
sdio ★★★★★
()
Ответ на: комментарий от sdio

Так, понял, надо было LC_ALL выставить. Всё равно разница в скорости в 10 раз, но уже можно жить(до этого разница была в 140 раз).

true_admin ★★★★★
() автор топика
Ответ на: комментарий от zolden

Не мучь греп, пусть шелл сам разворачивает дерево вложенных каталогов

К сожалению проблема не в обходе дерева.

true_admin ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.