-
Notifications
You must be signed in to change notification settings - Fork 7.6k
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 our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
iSazonov
merged 4 commits into
PowerShell:master
from
ArmaanMcleod:char-array-to-search-values-4
Feb 1, 2025
Merged
Replace char[] array in CompletionRequiresQuotes with cached SearchValues<char> #24907
iSazonov
merged 4 commits into
PowerShell:master
from
ArmaanMcleod:char-array-to-search-values-4
Feb 1, 2025
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 in CompletionRequiresQuotes
and use cached SearchValues<char>
with ContainsCharToCheck
method
/azp run |
Azure Pipelines successfully started running 4 pipeline(s). |
iSazonov
reviewed
Jan 31, 2025
src/System.Management.Automation/engine/CommandCompletion/CompletionCompleters.cs
Outdated
Show resolved
Hide resolved
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 changes
Feb 1, 2025
/azp run |
Azure Pipelines successfully started running 3 pipeline(s). |
char[]
array in CompletionRequiresQuotes
and use cached SearchValues<char>
with ContainsCharToCheck
method
Contributor
📣 Hey @ArmaanMcleod, how did we do? We would love to hear your feedback with the link below! 🗣️ 🔗 https://aka.ms/PSRepoFeedback |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
CL-CodeCleanup
Indicates 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.
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).