.NET Core 2.1 - Regex en bucle 200 veces más lento que 2.0 (3 veces en punto de referencia simple)
Tengo la siguiente expresión regular:
var regex = new Regex(
@"^ActiveMQ[\d\.-]*$",
RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
Se ejecuta más de ~ 1000 cadenas IsMatch
llamada). En .NET Core 2.0 toma alrededor de10ms
. Después de migrar a .NET Core 2.1, se hace cargo de2 seconds
en los mismos datos.
¿Tienes idea de lo que está pasando? ¿Algún cambio de comportamiento en 2.1?
======================
Update: BenchmarkDotNet
Reproducible 3x drop (solo ejecuta, cambianetcoreapp2.1
anetcoreapp2.0
incsproj
archivo, ejecutar de nuevo). @https: //github.com/ptupitsyn/netcore2.1-regex-perf/tree/master/sr
GetPackageInfos2
reduce la caída de rendimiento a solo25%
, pero sigue ahí. Cambiar esto en el código del mundo real no es trivial y me gustaría evitar este tipo de refactorización.Hay múltiples RegEx ejecutados en un bucle, y no pude reproducir la caída con solo un RegExUpdate 2
EliminarRegexOptions.Compiled
@ resuelve el problema!