2015-03-19 18 views
0

我試圖使用正則表達式,即使編譯正則表達式也有其性能下降。我應該在運行Regex.Replace 0123之前使用Regex.IsMatch

我想知道的是,在實際運行Regex.Replace之前,我應該首先檢查字符串中是否有匹配使用Regex.IsMatch

這個問題是關於優化和性能。

+2

大多數性能問題的答案是「在您的環境中嘗試它,客觀地衡量並看到」。然而,在這種情況下,我猜想在替換之前查看一個正則表達式匹配是否浪費時間,因爲它在替換中必須做的第一件事是無論如何都要再次匹配它。 – 2015-03-19 09:46:27

+1

我的猜測是否定的,在Regex.Replace之前調用Regex.IsMatch實際上會減慢執行速度。但既然你有代碼,爲什麼不測試它來確保? – Dirk 2015-03-19 09:46:35

回答

2

根據我的評論,性能問題通常通過在您的環境中試用並客觀地測量來回答。然而,這是相當明確的,並且基於預先替換必須進行匹配的直覺,我們可以去和inspect the source code。我們看到,Replace方法中,檢查參數之後它的第一件事是進行比賽:

match = regex.Match(input, startat); 

這表明,是的,它可能是在浪費時間,以檢查是否有這樣做之前的比賽替換。

+0

Raaah我遲到了3分鐘:/幹得好! – 2015-03-19 09:56:51

相關問題