首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RegEx性能优化

RegEx性能优化
EN

Stack Overflow用户
提问于 2013-12-19 11:24:47
回答 2查看 78关注 0票数 0

我有一个正则表达式,它从字符串中去掉布尔条件。我执行了一些基准测试,我注意到在字符串上运行这个regex替换( 1000次)花费了5-11秒。我对调整性能还是很陌生的,但这似乎很慢。

下面是regex:"\bAND\b|\bOR\b|""|\(|\)"

这种性能是预期的,还是我可以重写我的regex来改进性能。任何帮助都将不胜感激。

基准代码:

代码语言:javascript
运行
复制
Regex booleanRegex = new Regex(@"\bAND\b|\bOR\b|""|\(|\)", 
RegexOptions.IgnoreCase |   RegexOptions.Compiled);
Stopwatch t = new Stopwatch();
var inputString = "AND project manager";
t.Start();
for(int i = 0; i < 1000; i++)
{
   booleanRegex.Replace(inputString,"");
}
t.Stop();
var regex = t.ElapsedMilliseconds;

regex.Dump();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-19 11:28:14

你可以试一试,但我不确定它是否有很大的区别:

代码语言:javascript
运行
复制
[""()]|\b(?>AND|OR)\b

这里我假设"()比AND和OR更频繁,我使用括号来避免计算\b两次。

票数 1
EN

Stack Overflow用户

发布于 2013-12-19 11:28:38

你用RegexOptions.Compiled了吗?如果没有,那应该会让你加快速度。只需确保只初始化Regex对象一次。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20680466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档