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.
Purpose
Dynamo uses a lot of regexes in many places, many of which can be made static, since the regex pattern never changes. This PR changes most of the regexes I could find where the pattern never changes to a static compiled regex.
Adding the Compiled option to the Regex creation flags increases construction time a little, but creates a faster regex.
There is a fairly recent C# feature for compiling regex into the .dll using attributes. I did not want to move regexes around or change classes to be partial, so I avoided this. Using that feature would probably lead to bigger performance gains.
Performance
Example gain:
Code block instantiation (old)

Code block instantiation (new)

Every function that uses regex and gets called multiple times in quick succession (probably) gains a fair amount of speed from this, as the regex construction and compilation is avoided. See for example the unit or PII methods, which I would imagine are called fairly often in actual Dynamo use, and which use large and complicated regex expressions.
Declarations
Check these if you believe they are true
*.resx
filesRelease Notes
N/A
Reviewers
@mjkkirschner
FYIs
@dimven