Быстрый поиск в большом текстовом файле - PullRequest
1 голос
/ 16 марта 2020

Я пытаюсь написать программу поиска в C#, которая будет искать строку в большом текстовом файле (5 ГБ). Я сделал простой код, показанный ниже, но результаты поиска занимают много времени и могут занять около 30 минут. Вот так выглядит мой код:

public List<string> Search(string searchKey)
{
    List<string> results = new List<string>();
    StreamReader fileReader = new StreamReader("D:\Logs.txt");
    while ((line = fileReader.ReadLine()) != null)
    {
        if (line.Contains(searchKey)
        {
            results.Add(line);
        }
    }
}

Хотя код работает, он работает очень медленно и занимает около 30 минут. Можем ли мы что-то сделать, чтобы время поиска было меньше минуты?

1 Ответ

0 голосов
/ 16 марта 2020

Для поиска строк в действительно большом файле вы можете использовать алгоритм поиска Бойера-Мура, который является стандартным эталоном для практической литературы по поиску строк. Ниже приведены ссылки для его реализации:

...