2008/11/06

.Net Regex.Replace 造成CPU Loading 升高....

這二天公司遇到怪事,所有伺服器主機突然CPU飆高到100%,在同事徹夜努力下才找出問題,原來出在一句Regex.Replace的語法...

.NET的Regex.Replace很奇怪,在樣本文檔內若找不到符合pattern的條件,就會hand住,然後CPU飆高...但若樣本文檔內找得到,則又沒事...

同事給我一個參考連結:

CODING HORROR : Regex Performance

文章內可以看到,在不符合pattern的情況下,回應時間是倍數的成長,這就是造成效能下降的主因!

因此,爾後在使用Regex.Replace時,最好能先使用Regex.Match確認一下,再做Replace,以避免此情況發生。

其他參考資料:

沒有留言:

軟體工程的重要的指標