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