2010-07-06 140 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