\d在正則表達式中的效率不如[0-9]
最近的討論中,有人質疑在正則表達式中使用[0123456789]
而不是[0-9]
或\d
的效率。出乎意料的是,在C#正則表達式引擎中的測試表明,\d
的效率低於其他兩個選項。
效率低下的可能原因
\d
包含所有Unicode數字,而不僅僅是常見的0-9。因此,解析非標準數字可能會減慢正則表達式引擎的速度。 \d
包含[0-9]
之外的附加功能,可能需要更複雜的處理。這些額外功能會影響效率。 測試結果
為了證明這個問題,進行了以下測試:
\d
、[0-9]
、[0123456789]
)處理字符串所花費的時間:正則表達式 | 時間 | 相對\d的時間百分比 |
---|---|---|
\d |
00:00:00.2141226 | 100% |
[0-9] |
00:00:00.1357972 | 63.42% |
[0123456789] |
00:00:00.1388997 | 64.87% |
結果表明,[0-9]
和[0123456789]
在效率方面都明顯優於\d
。
結論
雖然\d
可以提供更廣泛的數字匹配功能,但在性能方面有所犧牲。對於性能關鍵型應用程序,建議使用更簡潔的[0-9]
或[0123456789]
。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3