Скорее всего, если вам нужно оптимизировать для повышения производительности вашего приложения, то код внутри цикла foreach - это то, что нужно оптимизировать, а не метод string.Split.
[EDIT:]
В другом месте StackOverflow есть несколько хороших ответов, связанных с оптимизированным анализом строк:
String.Split (), вероятно, делает больше, чем вы можете сделать самостоятельно, чтобы фактически разделить строку в хорошо оптимизированном виде. Это предполагает, что вы заинтересованы в возврате true или false для каждого разделенного раздела вашего ввода, конечно. В противном случае вы можете просто сосредоточиться на поиске вашей строки.
Как уже упоминали другие, если вам нужно искать через огромную строку (много сотен мегабайт) и, особенно, делать это многократно и непрерывно, посмотрите, что .NET 4 дает вам с помощью Parallel Library Task .
Для поиска по строкам вы можете посмотреть в этом примере на MSDN, как использовать методы IndexOf, LastIndexOf, StartsWith и EndsWith. Они должны работать лучше, чем метод Contains.
Конечно, лучшее решение зависит от фактов вашей конкретной ситуации. Вы захотите использовать класс System.Diagnostics.Stopwatch , чтобы узнать, сколько времени занимает ваша реализация (как текущая, так и новая), чтобы увидеть, что работает лучше.