Быстрый анализ показывает, что вы итеративно ищете ключевые слова. Если бы вы могли найти за один проход все ключевые слова, ваш алгоритм должен быть в целом улучшен. Выражение Regex может сделать это и связать его с опцией «Compiled», и вы должны начать видеть повышение производительности (потому что оно передаст строку для всех ключевых слов). Но это принесет пользу только вам, если у вас есть несколько ключевых слов. Вот быстрая идея, чтобы помочь вам в этом, но учтите, что на самом деле я не проверял производительность по вашему алгоритму.
string[] keywords = { "ac", "bd", "cd" };
string[] tosearch = { "abcdef" };
string pattern = String.Join("|", keywords);
Regex regex = new Regex(pattern, RegexOptions.Compiled);
foundAny = regex.IsMatch(String.Join("|", tosearch));
Также обратите внимание, что это работает до тех пор, пока ваши ключевые слова не содержат каких-либо специальных символов Regex (а ваши строки поиска не содержат символа канала. Однако специальные символы могут быть преодолены с помощью escape-последовательностей, а строки поиска - нет. надо присоединиться, как я сделал.