2010-07-06 3 views
4

Можно создать дубликат:
Regex.IsMatch vs string.ContainsC# - что быстрее: String.Contains() или Regex.isMatch()?

Что быстрее, предпочтительнее и почему?

Какая разница между механизмами между двумя?

Мне нужно найти некоторые значения из UserAgent, большинство значений можно использовать без подстановочных знаков (например, если я хочу поймать сотовые телефоны, я ищу iPhone вместо *iPhone* подстановочных знаков).

+0

Я думаю, вы можете попробовать запустить бенчмарк? –

+0

Нет, нет ответа, который мне нужен. – eugeneK

+1

@ daemonfire300, я не стал бы задавать этот вопрос, если бы захотел запустить бенчмарк. Я думал, что некоторые ppl уже знают или знают механизм за каждым методом. – eugeneK

ответ

12

Что быстрее

Try измерения. Но это неправильный вопрос, см. Ниже.

предпочтительней

Если я хочу, чтобы соответствовать фиксированной строки String.Contains делает только то, что мне нужно. Если мне нужно сопоставить шаблон, то String.Contains бесполезен.

Сравнивая их эффективность не имеет значения, они делают совершенно разные вещи. Сначала используйте нужный инструмент, и только тогда, если ваша производительность является проблемой, используйте профилирование для идентификации горячих частей вашего кода, чтобы посмотреть.

+0

Если Regex работает быстрее из-за лучшего алгоритма, почему я должен использовать Contains? Мне это не нужно для небольшого небольшого поиска, но для сложного, где самое низкое время выполнения срочно – eugeneK

+1

@eugeneK: Regex поддерживает комплексную логику соответствия (рассмотрим, как реализовать соответствие регулярных выражений). Было бы трудно сделать сравнение прямых строк медленным. – Richard

Смежные вопросы