Итак, я ищу способ эффективного поиска текста в файле. Сейчас я использую это:
using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read, 1024 * 1024, FileOptions.SequentialScan))
using (StreamReader streamReader = new StreamReader(fileStream))
{
string line;
while ((line = streamReader.ReadLine()) != null)
{
int index = 0;
while ((index = line.IndexOf(searchText, index, StringComparison.Ordinal)) != -1)
{
index += searchText.Length;
}
}
}
Однако мне было интересно, есть ли способ более эффективного поиска в файле. Я думал о поиске текста в буферах, но не знаю, как это сделать. Спасибо.
EDIT: без вызова IndexOf я получаю около 1600 мс. С индексом это около 7400 мс.
EDIT: у меня есть базовая c реализация чтения фрагментов, и время у меня уменьшилось до 740 мс. (Нет строк для чтения) У него еще много работы, но я в основном читаю фрагмент за раз и беру индекс.