我正在寫一個運行字符串就很多了一些正則表達式(〜10)(〜25元)C#應用程序。我曾嘗試谷歌這一點,但任何搜索與「減慢」的正則表達式都充滿了關於如何反向引用等減緩正則表達式的教程。我認爲這不是我的問題,因爲我的正則表達式開始快速並且減速。正則表達式性能下降
對於第一個一百萬左右的字符串需要60ms的每1000串左右運行正則表達式。到最後,它的速度會減慢到大約需要600毫秒。有誰知道爲什麼?
很糟糕,但我用的RegEx
而非緩存版本的實例和編譯表情,我可以改進它。
我的一些正則表達式的需要因人而異例如這取決於用戶的名稱可能是 mike said (\w*)
或john said (\w*)
我的理解是,這是不可能的編譯那些正則表達式,並傳遞參數(例如saidRegex.Match(inputString, userName)
)。
有沒有人有任何建議?
[編輯,以準確反映速度 - 是每1000個字符串,而不是每串]
你能發表一些代碼嗎? – 2013-02-11 17:18:45
如果您採取了通常的措施來提高績效,那麼就很難提供更多建議。如果沒問題,你能顯示你的正則表達式嗎? – nhahtdh 2013-02-11 17:19:57
正則表達式引擎本身不太可能放緩。更有可能的是,您的應用程序正在保存結果,因此內存在不斷增加,這會導致整體性能下降。監視你的進程內存大小。同時檢查內存泄漏。 – Barmar 2013-02-11 17:24:52