TargetEntry optimizations for Results #9590
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.
Context
@jeffkl has a case with potentially thousands of items that would all go into one bucket in the Returns. MSBuild is deduplicating it, but so is NuGet, which is wasteful, so he will likely stop using Returns. This change will save him a small amount of allocations, but it would save a ton of allocations if he were to keep using it, since it will no longer need to repeatedly reallocate the HashSet, and it won't need to allocate as many Lists. It will still save one List's worth of allocations on every single Target that doesn't have a Returns.
Changes Made
Effectively making List allocations lazier and taking advantage of ToList to avoid doing as many (duplicated) collection operations.