Skip to content

[CASSANDRA-21359][trunk] Reduce allocation in row merge logic#4795

Open
netudima wants to merge 1 commit into
apache:trunkfrom
netudima:CASSANDRA-21359-trunk
Open

[CASSANDRA-21359][trunk] Reduce allocation in row merge logic#4795
netudima wants to merge 1 commit into
apache:trunkfrom
netudima:CASSANDRA-21359-trunk

Conversation

@netudima
Copy link
Copy Markdown
Contributor

org.apache.cassandra.utils.MergeIterator.Candidate - has Comparator field which is the same for all Candidates under an MergeIterator instance, we can move the field to MergeIterator level. Candidate is 4.8% of all allocations and we can save 20% (~1% of all allocations) of it for JDK 21 with compressed references on.

switch from ArrayList to array in org.apache.cassandra.db.rows.Row.Merger
The ArrayList iterator costs 0.72% and BulkIterator.Adapter costs 0.35%. So, in total we can save here ~1% of total allocations.

patch by Dmitry Konstantinov; reviewed by TBD for CASSANDRA-21359

org.apache.cassandra.utils.MergeIterator.Candidate - has Comparator field which is the same for all Candidates under an MergeIterator instance, we can move the field to MergeIterator level. Candidate is 4.8% of all allocations and we can save 20% (~1% of all allocations) of it for JDK 21 with compressed references on.

 switch from ArrayList to array in org.apache.cassandra.db.rows.Row.Merger
The ArrayList iterator costs 0.72% and BulkIterator.Adapter costs 0.35%. So, in total we can save here ~1% of total allocations.

patch by Dmitry Konstantinov; reviewed by TBD for CASSANDRA-21359
Copy link
Copy Markdown
Contributor

@frankgh frankgh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good in general, I just a small comment

}
// try to estimate and set a potential target capacity
if (dataBuffer.length < columnsCountEstimation)
dataBuffer = Arrays.copyOf(dataBuffer, columnsCountEstimation);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any reason why we don't directly do ?

Suggested change
dataBuffer = Arrays.copyOf(dataBuffer, columnsCountEstimation);
dataBuffer = new ColumnData[columnsCountEstimation];

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants