我有以下正则表达式:
var regex = new Regex(
@"^ActiveMQ[\d\.-]*$",
RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
Run Code Online (Sandbox Code Playgroud)
它运行超过1000个字符串(IsMatch调用).在.NET Core 2.0中它需要10ms.迁移到.NET Core 2.1后,它将接管2 seconds相同的数据.
知道发生了什么事吗?2.1中的任何行为都有变化?
======================
更新:BenchmarkDotNet
可重复3次降(只运行,改netcoreapp2.1以netcoreapp2.0在csproj文件中,再次运行).
https://github.com/ptupitsyn/netcore2.1-regex-perf/tree/master/src
GetPackageInfos2perf降低仅降低25%,但它仍然存在.在真实世界的代码中更改它并非易事,我想避免这种重构.更新2
删除RegexOptions.Compiled解决了问题!