Skip to content

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

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

[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

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

Comment thread src/java/org/apache/cassandra/db/rows/Row.java Outdated
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.

+1 looks good. I added one additional small comment

Comment thread src/java/org/apache/cassandra/utils/MergeIterator.java Outdated
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 Francisco Guerrero for CASSANDRA-21359
@netudima netudima force-pushed the CASSANDRA-21359-trunk branch from 4575c05 to 8dbd76a Compare May 21, 2026 14:45
@netudima
Copy link
Copy Markdown
Contributor Author

Merged as 71e8b7c

@netudima netudima closed this May 22, 2026
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