Не устраивает скорость работы 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(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д