Replace boxing ArrayList in LassoSelectionBehavior, remove unnecessary array alloc #9223
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.
Description
Replaces boxing
ArrayList
with genericList<Point>
with preallocated size of 4 as that's always gonna be filled in the least, and removes array allocation through usage ofSpan<Point>
as a new return type.In
LassoHelper
the function to match points finally runs an efficientforeach
(as it was iterating over an array before).Note that we could return
ROS<Point>
instead and iterate via value but this solution offers an additional performance without really introducing any real risks.In total, this will run about 3x faster along with less than 50% of originally introduced allocations.
Customer Impact
Improved performance, decreased allocations.
Regression
None.
Testing
Build and benchmark only but there are no functional changes.
Risk
None.
Microsoft Reviewers: Open in CodeFlow