захват большого объема текста

У меня есть несколько гигабайтов исходного кода.

использование рекурсивного grep для термина может требовать времени.

Я использую ext3.

Существует ли более быстрый путь? Использование нашло бы быть быстрее и раз так почему? Был бы с помощью файловой системы как XFS, дают заметно лучшие результаты?

2
задан 16.12.2009, 22:33

7 ответов

Вы попробовали ack? Это работает вполне прилично здесь на 1 мм + измеренная кодовая база.

5
ответ дан 08.12.2019, 04:38

Можно получить лучшую производительность с agrep, который использует роман bitmasking алгоритм для поиска.

Если Вы ищете символы, ctags, или завершающие теги могли бы работать достаточно хорошо для создания индекса для поиска.

3
ответ дан 08.12.2019, 04:38

Единственным путем Вы доберетесь, существенное улучшение по grep должно использовать индексируемую поисковую систему как Strigi. Файловая система имеет очень мало значения, если у Вас нет огромного количества очень маленьких файлов.

2
ответ дан 08.12.2019, 04:38

Это должно, вероятно, быть на суперпользователе.

Grepping не является идеальным решением Вашей проблемы, так как он выполняет линейный поиск.

Индексируйте свои файлы для поиска с помощью настольного решения для индексации, такие как Гончая или Google Desktop.

1
ответ дан 08.12.2019, 04:38

Я не думаю, что FS будет иметь большое значение; возможности, это, вычисляют связанный. Вы могли проверить это использование top видеть, курят ли Ваши центральные процессоры.

Вы могли также отправить свой regexp здесь и позволить умным людям ТАКЖЕ - трещины при оптимизации его. Существует множество методов для предотвращения отслеживания в обратном порядке и т.д.

1
ответ дан 08.12.2019, 04:38

Вот то, что я понимаю -

  • Вы ищете исходный код термин
  • Требуется видеть, какие исходные файлы используют тот термин
  • У Вас, вероятно, есть тысячи файлов (составляющий в целом ГБ)
  • Вы хотите знать все случаи 'термина' в каждом файле или да/нет признак того, использовал ли его в файле или нет? (флаг-l делает это).

Можно использовать политику разделяй и властвуй. Разделите свой набор в несколько наборов файла, выполните несколько властей parallely.

Не уверенный, если Ваша потребность является одноразовой вещью или чем-то повторяющимся по своей природе.

1
ответ дан 08.12.2019, 04:38

Если Вам только нужно к grep, подмножество файлов затем использует, находят сначала. Например, к только grep.h заголовочные файлы:

find path/to/source -name *.h -print0 | xargs -0 grep pattern 

Это будет быстрее, так как Вы только получаете доступ к именам файлов большую часть времени, а не содержанию файла, что означает много меньше доступов к диску.

1
ответ дан 08.12.2019, 04:38

Теги

Похожие вопросы