Диагностика медленного поиска grep или ack в сложном каталоге (код, файлы, php-скрипты и т. Д.) Для более быстрого повторного использования - PullRequest
5 голосов
/ 05 апреля 2011

Я использую ack (иногда распространяемый как ack-grep) для поиска в сложной директории кода, изображений, кто знает, что еще, и он реагирует довольно медленно.Как я могу диагностировать то, что он ищет, что делает его медленным, чтобы я мог игнорировать их?

Я только что понял, что причины, по которым мой ack-grep медленен, вероятно, замедляют grep дляпо той же причине, поэтому я изменил формулировку заголовка для обозначения обоих.

Текущий псевдоним команды ack-grep:

function view ()
{
echo "ack-grep -i $@ // ignoring third-party directories"
ack-grep -i --ignore-dir=third-party --ignore-dir="unclean-files" --ignore-dir=FCKeditor --ignore-dir=smarty --ignore-dir=codepress --ignore-dir=yui "$@"
}

Поэтому я выполняю поиск без учета регистранекоторая строка через этот псевдоним, например view "Oops! Required fields", игнорируя определенные каталоги.

Я думаю, что я действительно мог бы использовать "подробный" режим для grep или ack-grep, чтобы я мог визуально видеть подкаталоги, которыеон торчит, потому что поиск идет медленно.

Ответы [ 2 ]

4 голосов
/ 05 апреля 2011

Завершено с помощью ключа -L, чтобы он выводил все файлы, которые ему соответствуют, для быстрой визуальной диагностики проблем. Используется только структура команды ниже:

ack-grep -L "Oops! Required fields were not all completed."

1 голос
/ 05 апреля 2011

Что вы ищете?Если это просто источник определенного типа (скажем, вы ищете переменную), используйте соответствующий ключ (для perl, используйте --perl и т. Д.).Если у вас есть тонны источников, это займет некоторое время, независимо от того, что вы делаете.Кроме того, насколько сложным является ваше регулярное выражение?У Regex есть издержки, и если вы просто ищете имя чего-то, не используйте regex.Вы не должны использовать молоток, чтобы ослабить болт.

...