d在正则表达式中的效率不如[0-9]
最近的讨论中,有人质疑在正则表达式中使用[0123456789]
而不是[0-9]
或d
的效率。出乎意料的是,在C#正则表达式引擎中的测试表明,d
的效率低于其他两个选项。
效率低下的可能原因
d
包含所有Unicode数字,而不仅仅是常见的0-9。因此,解析非标准数字可能会减慢正则表达式引擎的速度。d
包含[0-9]
之外的附加功能,可能需要更复杂的处理。这些额外功能会影响效率。测试结果
为了证明这个问题,进行了以下测试:
d
、[0-9]
、[0123456789]
)处理字符串所花费的时间:正则表达式 | 时间 | 相对d的时间百分比 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
00:00:00.2141226 | 100% | ||||||||||||
00:00:00.1357972 | 63.42% | |||||||||||||
[0-9] |
00:00:00.1388997 | 64.87% |
[0123456789]
结果表明,d
和在效率方面都明显优于。
结论d
[0-9]
虽然[0123456789]
可以提供更广泛的数字匹配功能,但在性能方面有所牺牲。对于性能关键型应用程序,建议使用更简洁的
以上是\ d的效率比[0-9]或[0123456789]在Regex中的效率低?的详细内容。更多信息请关注PHP中文网其他相关文章!