2010-07-06 27 views
4

可能重复:
Regex.IsMatch vs string.ContainsC# - 哪个更快:String.Contains()或Regex.isMatch()?

这是更快,最好,为什么?

两者之间的机制有什么不同?

我需要从UserAgent中搜索一些值,大多数值可以不使用通配符(例如,如果我想捕获手机,我搜索iPhone而不是*iPhone*通配符)。

+0

我想你可能会尝试运行一个基准? – 2010-07-06 12:51:57

+0

不,没有我需要的答案。 – eugeneK 2010-07-06 12:58:16

+1

@ daemonfire300,如果我想运行基准测试,我不会问这个问题。我认为一些人已经知道或知道每种方法背后的机制。 – eugeneK 2010-07-06 12:59:41

回答

12

什么是快

尝试测量。但是这是错误的问题,见下文。

最好

如果我想匹配固定字符串String.Contains不正是我需要的。如果我需要模式匹配,那么String.Contains是无用的。

比较这些性能是无关紧要的,他们做了完全不同的事情。首先使用正确的工具,然后只有在性能问题时使用性能分析来识别代码的热部分才能看清楚。

+0

如果Regex由于更好的算法而执行得更快,为什么我应该使用Contains?我不需要这个小搜索,而是一个复杂的搜索,其中最低的执行时间是紧急的 – eugeneK 2010-07-06 12:56:09

+1

@eugeneK:Regex支持复杂的匹配逻辑(考虑如何实现正则表达式匹配)。很难直接比较字符串,因为它比较慢。 – Richard 2010-07-06 13:04:11