|
|
|
|
Автор:
|
Anonymous
|
|
Тема:
|
Оптимизация поиска в больших текстовых файлах
|
|
Дата:
|
2/8/2012 6:44:00 PM
|
Доброго времени суток! Есть такая проблемка. Вступление: Существует определенное количество log файлов. Каждый размером около 500мб.
Мне нужно в файле найти запись X , и из строки с найденной записью X сохранить рядом стоящею запись Y. Записей X у меня около 500. По мере нахождения я удаляю найденные.
Пишу на С# .NET. Проблема в производительности – 1 файл минут 15. Пример метода поиска(псевдо код):
FileInfo f = new FileInfo(per.ListNameLog[k]);
using (FileStream fs = f.Open(FileMode.Open, FileAccess.Read, FileShare.Read))
{
using (StreamReader sr = new StreamReader(fs, Encoding.Default))
{
while (!sr.EndOfStream)
{
For(int I = 0;i< X.count;i++)
{
line = sr.ReadLine();
if((index = line.IndexOf(“X[i]”,0))>=0)
{
Y = line.Substring(index+10, 20)
}
}
}
}
}
Подскажите как можно оптимизировать процесс? Может можно заменить некоторые функции. Например меня смущает IndexOf(). Как по другому искать фрагмент?
|
|
|
|