Make the static constructor of PSVersionInfo run faster for stable PowerShell releases#18210
Make the static constructor of PSVersionInfo run faster for stable PowerShell releases#18210daxian-dbw merged 7 commits intoPowerShell:masterfrom
PSVersionInfo run faster for stable PowerShell releases#18210Conversation
There was a problem hiding this comment.
This is to get rid of using Regex at startup, which is not necessary.
src/Microsoft.PowerShell.ConsoleHost/host/msh/ConsoleHostRawUserInterface.cs
Outdated
Show resolved
Hide resolved
src/Microsoft.PowerShell.ConsoleHost/resources/ConsoleHostRawUserInterfaceStrings.resx
Outdated
Show resolved
Hide resolved
|
@daxian-dbw I think we should use SG to put all that are used at startup (one const I guess?) in separate helper so that exclude PSVersion static class initialization at startup. As result we can reduce number our optimizations in PSVersion class and safe our time. |
|
This PR has Quantification details
Why proper sizing of changes matters
Optimal pull request sizes drive a better predictable PR flow as they strike a
What can I do to optimize my changes
How to interpret the change counts in git diff output
Was this comment helpful? 👍 :ok_hand: :thumbsdown: (Email) |
|
@iSazonov @SeeminglyScience The So, what's left in this PR is much simpler. Please review again. |
SeeminglyScience
left a comment
There was a problem hiding this comment.
LGTM! Love it ❤️
PR Summary
Make the static constructor of
PSVersionInforun faster for stable PowerShell releases.Major changes are:
Fast parse the pre-defined PowerShell version string, instead of going throughSemanticVersion.Parse(string).For stable versions, this can avoid all overhead in constructing theSemanticVersionobject.For preview versions, a regex matching is still needed when constructing theSementicVersionobject.Versioninstead ofSemanticVersion, to avoid the overhead of casting when using them for$PSVersionTable.PSCompatibleVersions.ConsoleHostRawUserInterfaceto not useRegex.PR Checklist
.h,.cpp,.cs,.ps1and.psm1files have the correct copyright headerWIP:or[ WIP ]to the beginning of the title (theWIPbot will keep its status check atPendingwhile the prefix is present) and remove the prefix when the PR is ready.