我有一个正则表达式可以从字符串中去除布尔条件。我执行了一些基准测试,并且我注意到运行这个正则表达式替换一个字符串1000次需要5-11秒。我对正则表现很新,但这似乎很慢。RegEx性能优化
这里是正则表达式:"\bAND\b|\bOR\b|""|\(|\)"
这是预期表现,或可我重新写我的正则表达式来改善服务表现。任何帮助将不胜感激
基准代码:
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();
在使用之前编译它可能会有所帮助。也取决于字符串有多大 – Ben
请显示您的基准代码。无论您的基准测试是错误的,还是您运行它的文本都非常长。 – dasblinkenlight
您是否多次运行过您的基准测试?可能会出现一些JIT延迟。 – driis