Blake Eggleston created CASSANDRA-15389:
-------------------------------------------
Summary: Minimize BTree iterator allocations
Key: CASSANDRA-15389
URL: https://issues.apache.org/jira/browse/CASSANDRA-15389
Project: Cassandra
Issue Type: Sub-task
Reporter: Blake Eggleston
Assignee: Blake Eggleston
Allocations of BTree iterators contribute a lot amount of garbage to the
compaction and read paths.
This patch removes most btree iterator allocations on hot paths by:
• using Row#apply where appropriate on frequently called methods (Row#digest,
Row#validateData
• adding BTree accumulate method. Like the apply method, this method walks the
btree with a function that takes and returns a long argument, this eliminates
iterator allocations without adding helper object allocations
(BTreeRow#hasComplex, BTreeRow#hasInvalidDeletions, BTreeRow#dataSize,
BTreeRow#unsharedHeapSizeExcludingData, Rows#collectStats,
UnfilteredSerializer#serializedRowBodySize) as well as eliminating the
allocation of helper objects in places where apply was used previously^[1]^.
• Create map of columns in SerializationHeader, this lets us avoid allocating
a btree search iterator for each row we serialize.
These optimizations reduce garbage created during compaction by up to 13.5%
[1] the memory test does measure memory allocated by lambdas capturing objects
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]