У меня есть несколько гигабайтов исходного кода.
использование рекурсивного grep для термина может требовать времени.
Я использую ext3.
Существует ли более быстрый путь? Использование нашло бы быть быстрее и раз так почему? Был бы с помощью файловой системы как XFS, дают заметно лучшие результаты?
Вы попробовали ack? Это работает вполне прилично здесь на 1 мм + измеренная кодовая база.
Можно получить лучшую производительность с agrep, который использует роман bitmasking алгоритм для поиска.
Если Вы ищете символы, ctags, или завершающие теги могли бы работать достаточно хорошо для создания индекса для поиска.
Единственным путем Вы доберетесь, существенное улучшение по grep должно использовать индексируемую поисковую систему как Strigi. Файловая система имеет очень мало значения, если у Вас нет огромного количества очень маленьких файлов.
Это должно, вероятно, быть на суперпользователе.
Grepping не является идеальным решением Вашей проблемы, так как он выполняет линейный поиск.
Индексируйте свои файлы для поиска с помощью настольного решения для индексации, такие как Гончая или Google Desktop.
Я не думаю, что FS будет иметь большое значение; возможности, это, вычисляют связанный. Вы могли проверить это использование top
видеть, курят ли Ваши центральные процессоры.
Вы могли также отправить свой regexp здесь и позволить умным людям ТАКЖЕ - трещины при оптимизации его. Существует множество методов для предотвращения отслеживания в обратном порядке и т.д.
Вот то, что я понимаю -
Можно использовать политику разделяй и властвуй. Разделите свой набор в несколько наборов файла, выполните несколько властей parallely.
Не уверенный, если Ваша потребность является одноразовой вещью или чем-то повторяющимся по своей природе.
Если Вам только нужно к grep, подмножество файлов затем использует, находят сначала. Например, к только grep.h заголовочные файлы:
find path/to/source -name *.h -print0 | xargs -0 grep pattern
Это будет быстрее, так как Вы только получаете доступ к именам файлов большую часть времени, а не содержанию файла, что означает много меньше доступов к диску.