Не устраивает скорость работы Regex - C#
Формулировка задачи:
Задача: разобрать файл с текстом на слова и числа для последующей их индексации.
Исполнение: считываем файл построчно,
разбирая строки на слова и числа с помощью регулярного выражения (Regex),
обработка результатов.
Проблема: низкая скорость работы. Тестовый файл ~20 Мб. разбирается пару-тройку часов,
а требуется обработка файлов размером от 100 Мб.
p.s. аналогичные действия (индексация файлов) некая программа на "калькуляторах" выполняет
в считанные секунды (с тестовым файлом).
p.s.s. пробовал на делфи разбить задачу на потоки (по потоку на каждый символ, с которого может начинаться слово),
все равно - долго (минуты, десятки минут), да и при том садит проц на 80% (конфигурация компьютера, на котором программа будет работать в 4 раза,
если так можно выразится, хуже).
Буду признателен любой помощи, с Уважением!
Решение задачи: «Не устраивает скорость работы Regex»
textual
Листинг программы
var path = ...;
foreach(var word in GetWords(File.ReadAllLines(path)))
{
//...
}
...
static IEnumerable<string> GetWords(IEnumerable<string> lines)
{
var sb = new StringBuilder();
foreach(var line in lines)
{
sb.Length = 0;
foreach(var c in line)
{
if (char.IsLetterOrDigit(c))
sb.Append(c);
else
if(sb.Length > 0)
{
yield return sb.ToString();
sb.Length = 0;
}
}
if(sb.Length > 0)
yield return sb.ToString();
}
}