@Rihard_Novozhilov

Работа с огромным количеством файлов?

C++, C#, RUST? Задача обработать большое количество файлов (более 2 миллионов). Какую технологию выбрать?
  • Вопрос задан
  • 351 просмотр
Пригласить эксперта
Ответы на вопрос 4
saboteur_kiev
@saboteur_kiev
software engineer
bash отлично справится

find . -name "file.ext" | xargs -n 10 -P 10 "phraze"
Ответ написан
Комментировать
@rPman
Если миллион файлов находится на одном физическом устройстве, то многопоточность тут не требуется и даже вредна. Для поиска на нескольких дисках достаточно запустить просто несколько экземпляров приложения для поиска, указав для каждого свой список файлов на своих дисках.

Последовательное чтение файлов для простого поиска подстроки - очень простая задача, берешь c++, делаешь цикл с fgetstr (если обработка нужна построчная), заранее подготавливаешь искомые строки во всех используемых кодировках как набор байт char* (в идеале в виде констант, т.е. сгенерировав код) просто сравнивая их с помощью strcmp... если таких строк много то подготовь таблицы посимвольного поиска (нагенерировать последовательно вложенные switch case) - этот подход наиболее быстрый из всех возможных, позволяет обрабатывать миллионы строк в секунду

p.s. если что, gui можно реализовать на одном языке программирования (c# .net) а поиск на c++, запуская из gui приложение, передав нужные параметры в командной строке или специальном файле

p.p.s. если поиск нужно делать часто, может все же поместить эти файлы в базу данных и создать для искомых данных индексы?
Ответ написан
Комментировать
Griboks
@Griboks
Узкое место тут в файловой системе. Всё остальное не имеет значения.
Ответ написан
Комментировать
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
https://www.elastic.co/elasticsearch/features#elas...
И какую нибудь веб морду. Искать будет сильно быстрее чем ваши потуги.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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