当前位置: 首页 > 编程语言 > C#

C#学习教程:.NET Core 2.1 – 循环中的正则表达式200x比2.0慢(简单基准中为3x)分享

时间:2023-04-10 13:47:16 C#

C#学习教程:.NETCore2.1-循环中的正则表达式比2.0慢200倍(简单基准测试中为3倍)我有以下正则表达式:varregex=newRegex(@"^ActiveMQ[d.-]*$",RegexOptions.Compiled|RegexOptions.IgnoreCase|RegexOptions.CultureInvariant);它运行超过1000个字符串(IsMatch传输)。在.NETCore2.0中大约需要10ms。迁移到.NETCore2.1后,同样的数据处理时间超过2秒。你可知道发生了什么?2.1中有任何行为变化吗?=======================更新:BenchmarkDotNet可以删除netcoreapp2.03x(只需运行,再次在csproj文件netcoreapp2.0中将csproj更改为netcoreapp2.0跑步)。https://github.com/ptupitsyn/netcore2.1-regex-perf/tree/master/src更新2删除RegexOptions.Compiled解决了问题!RegexOptions.Compiled未在.NETCore2.0中实现,但在.NETCore2.1中实现。编译涉及初始开销,对于某些使用模式,该开销超过了编译正则表达式的好处。我的情况有点复杂,似乎.NET中可能存在错误,因为即使进行适当的基准测试(预热),编译模式也很慢。详见Corefx问题:https://github.com/dotnet/corefx/issues/30131以上由C#学习教程分享:.NETCore2.1-Regexinloop200xslowerthan2.0(3xinsimplebenchmark)All内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: