Optimize AbstractListenableFuture Memory Allocations#28
Open
amcrn wants to merge 1 commit intocouchbase:masterfrom
Open
Optimize AbstractListenableFuture Memory Allocations#28amcrn wants to merge 1 commit intocouchbase:masterfrom
amcrn wants to merge 1 commit intocouchbase:masterfrom
Conversation
Problem: If an empty ArrayList has addAll() invoked with a Collection argument that has a size less than 10, the underlying elementData Object[] is still grown to 10 via an Array copy. In the case of AbstractListenableFuture, the number of listeners is often 0 or 1, and AbstractListenableFuture is in the critical path, meaning this behavior causes unnecessary GC pressure for high throughput applications. Therefore, this commit enhances the logic to avoid the construction of the listener copy ArrayList and its iterator if possible, and if not, to use the more efficient constructor vs. addAll().
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Problem: If an empty ArrayList has addAll() invoked with a Collection
argument that has a size less than 10, the underlying elementData
Object[] is still grown to 10 via an Array copy. In the case of
AbstractListenableFuture, the number of listeners is often 0 or 1,
and AbstractListenableFuture is in the critical path, meaning this
behavior causes unnecessary GC pressure for high throughput
applications.
Therefore, this commit enhances the logic to avoid the construction
of the listener copy ArrayList and its iterator if possible, and if
not, to use the more efficient constructor vs. addAll().