Как я могу ускорить поиск по файлу около 2 ГБ в C под Linux - PullRequest
1 голос
/ 02 ноября 2019

Я занимаюсь разработкой программы на C под Linux, в которой выполняется поиск файла размером ~ 2 ГБ. Файл состоит из строк текста, оканчивающихся на '\n', каждая строка состоит из пяти полей '|', разделенных как a | b | c | d | e |.

Затем мне нужно проанализировать каждую строку, чтобы выполнитьпоиск. Файл сортируется по полю a, но поиск выполняется, главным образом, с использованием полей b и c в качестве ключей поиска!

Я пытался использовать mapped file для ускорения поиска по файлу, но яне получил удовлетворительных результатов, главным образом - я думаю - по причинам, объясненным выше.

Теперь я думаю использовать массив, в который я вставляю данные, уже проанализированные в структуре, а затем сортирую массив пополя b и c и применение двоичного поиска, только если ключи поиска - b и c, в противном случае я использую последовательный поиск.

Полезно ли использовать отображенную память для заполнения массива из последовательного файла?

Это хороший способ улучшить исследования?

Любые предложения приветствуются

...