我有一个正则表达式,它从字符串中去掉布尔条件。我执行了一些基准测试,我注意到在字符串上运行这个regex替换( 1000次)花费了5-11秒。我对调整性能还是很陌生的,但这似乎很慢。
下面是regex:"\bAND\b|\bOR\b|""|\(|\)"
这种性能是预期的,还是我可以重写我的regex来改进性能。任何帮助都将不胜感激。
基准代码:
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();
发布于 2013-12-19 11:28:14
你可以试一试,但我不确定它是否有很大的区别:
[""()]|\b(?>AND|OR)\b
这里我假设"()比AND和OR更频繁,我使用括号来避免计算\b
两次。
发布于 2013-12-19 11:28:38
你用RegexOptions.Compiled
了吗?如果没有,那应该会让你加快速度。只需确保只初始化Regex对象一次。
https://stackoverflow.com/questions/20680466
复制相似问题