В настоящее время я перебираю где-то между 7000 и 10000 определений текста, размер которых варьируется от 0 до 5000 символов, и я хочу проверить, существует ли конкретная строка в каком-либо из них. Я хочу сделать это где-то в районе 5000 различных определений строк.
В большинстве случаев я просто хочу узнать точное совпадение без учета регистра, однако иногда требуется регулярное выражение, чтобы быть более конкретным. Мне было интересно, будет ли быстрее использовать другую технику «поиска», когда регулярное выражение не требуется.
Уменьшенная версия кода выглядит примерно так.
foreach (string find in stringsiWantToFind)
{
Regex rx = new Regex(find, RegexOptions.IgnoreCase);
foreach (String s in listOfText)
if (rx.IsMatch(s))
find.FoundIn(s);
}
Я немного перечитал, чтобы понять, упускаю ли я что-нибудь очевидное. Есть несколько предложений по использованию скомпилированных регулярных выражений, однако я не вижу, что это полезно, учитывая «динамическую» природу регулярного выражения.
Я также прочитал интересную статью о CodeProject, так что я только собираюсь взглянуть на использование FastIndexOf, чтобы увидеть, как оно сравнивается по производительности.
Мне просто интересно, есть ли у кого-нибудь какие-либо советы для решения этой проблемы и как можно оптимизировать производительность?
Спасибо