Это переменная.Производительность сравнения представляет собой сложную функцию входных данных, культуры, используемой для сравнения, чувствительности к регистру и CompareOptions
.Создание объекта Regex обходится дороже (если только он не находится в кеше Regex
), поэтому, если вы делаете много разовых сравнений, его использовать не так уж и хорошо, и я обнаружил, что он обычно медленнее, чем IndexOf()
, но YMMV.
Имейте в виду, что при использовании Contains / IndexOf культура, в которой работает пользователь / поток, будет определять способ сравнения.Это может оказать существенное влияние на производительность.Не все культуры такие быстрые.
Инвариантная культура - это очень быстрая культура.Если вы используете CompareInfo
напрямую, а не String.IndexOf()
, это будет еще быстрее.
CultureInfo.InvariantCulture.CompareInfo.IndexOf(..)
Единственный способ быть уверенным в правильности выбора - это тестирование.Тем не менее, если вы не перебираете много мегабайт строк, это не будет иметь значения, которое имеет значение для всех.Как сказал ранее ChrisF, в этом случае сконцентрируйтесь на читаемом / поддерживаемом коде.
Вот хорошая статья о том, как максимально эффективно использовать регулярные выражения: Оптимизация производительности регулярных выражений