這二天公司遇到怪事,所有伺服器主機突然CPU飆高到100%,在同事徹夜努力下才找出問題,原來出在一句Regex.Replace的語法...
.NET的Regex.Replace很奇怪,在樣本文檔內若找不到符合pattern的條件,就會hand住,然後CPU飆高...但若樣本文檔內找得到,則又沒事...
同事給我一個參考連結:
CODING HORROR : Regex Performance
文章內可以看到,在不符合pattern的情況下,回應時間是倍數的成長,這就是造成效能下降的主因!
因此,爾後在使用Regex.Replace時,最好能先使用Regex.Match確認一下,再做Replace,以避免此情況發生。
其他參考資料:
沒有留言:
張貼留言