- Notifications
You must be signed in to change notification settings - Fork7.7k
Replace char[] array in CompletionRequiresQuotes with cached SearchValues<char>#24907
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Merged
iSazonov merged 4 commits intoPowerShell:masterfromArmaanMcleod:char-array-to-search-values-4Feb 1, 2025
Merged
Replace char[] array in CompletionRequiresQuotes with cached SearchValues<char>#24907
iSazonov merged 4 commits intoPowerShell:masterfromArmaanMcleod:char-array-to-search-values-4Feb 1, 2025
Uh oh!
There was an error while loading.Please reload this page.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
…Values<char> with ContainsCharToCheck method
char[]
array inCompletionRequiresQuotes
and use cachedSearchValues<char>
withContainsCharToCheck
method/azp run |
Azure Pipelines successfully started running 4 pipeline(s). |
src/System.Management.Automation/engine/CommandCompletion/CompletionCompleters.cs OutdatedShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
iSazonov approved these changesFeb 1, 2025
/azp run |
Azure Pipelines successfully started running 3 pipeline(s). |
char[]
array inCompletionRequiresQuotes
and use cachedSearchValues<char>
withContainsCharToCheck
methoded982b4
intoPowerShell:master 60 of 62 checks passed
Uh oh!
There was an error while loading.Please reload this page.
Contributor
microsoft-github-policy-servicebot commentedFeb 1, 2025 • edited by unfurl-linksbot
Loading Uh oh!
There was an error while loading.Please reload this page.
edited by unfurl-linksbot
Uh oh!
There was an error while loading.Please reload this page.
📣 Hey@ArmaanMcleod, how did we do? We would love to hear your feedback with the link below! 🗣️ 🔗https://aka.ms/PSRepoFeedback |
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Labels
CL-CodeCleanupIndicates that a PR should be marked as a Code Cleanup change in the Change Log
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.
Uh oh!
There was an error while loading.Please reload this page.
PR Summary
Similar to below PRs:
#24896
#24880
#24879
I've removed the
char[]
array allocation inCompletionRequiresQuotes
to reduce allocations every time this method is called which is referenced in 15 different places inCompletionCompleters
class.Instead I have made the default chars & escape chars of type
SearchValues<char>
which is cached in the class and use a methodContainsCharsToCheck
. This method replaces the previousIndexOfAny
calls with thechar[]
array and instead uses the efficientContainsAny<T>(Span<T>, SearchValues<T>)
).I have done some benchmarks and it seems to bring a performance benefit with execution count and reduced allocation.
Benchmark
Details
Test Code
Results
PR Context
PR Checklist
.h
,.cpp
,.cs
,.ps1
and.psm1
files have the correct copyright headerWIP:
or[ WIP ]
to the beginning of the title (theWIP
bot will keep its status check atPending
while the prefix is present) and remove the prefix when the PR is ready.- [ ] Issue filed:
(which runs in a different PS Host).