Don't compile SDK pattern regexes on .NET Framework #9173
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Contributes to AB#1811625
Context
Compiled regular expressions tend to run slower than interpreted ones on .NET Framework. Additionally, the cost of compiling is significant, especially on 64-bit.
Here's a benchmark running
IsMatch("Microsoft.NET.Sdk")
against the only SDK regex we ship inbox:^(?i)vcpkg:.*
. Note that it does not include the compilation, which is an additional one-time cost.Changes Made
Interpret
ResolvableSdkRegex
on .NET Framework. We made an analogous change to globbing some time ago in #6632.Testing
Existing unit tests, targeted micro benchmark.
Notes
In the trace attached to the AzDO bug, this change eliminates 1/3 of the SDK resolution cost.