Optimize InternalAggregations construction a little #120868
Open
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.
We can streamline and optimize this logic a little to see less copying and more compact results.
Especially the pattern of copy to
ArrayList
and then add one is needlessly inefficient because it's a guaranteed resize of the list with a suboptimal underlying array in 100% of cases.Also, we really only need one way of appending to a buckets aggs list. Out of the various ways we used the code based on
.collect(Collectors.toList())
also only worked by accident as that collector does not guarantee a mutable return.In any case all the stream wrapping and resizing is definitely slower than what's in this PR I'd say + having the same type for the list in more situations is a neat added bonus in terms of compiler behavior.