[ https://issues.apache.org/jira/browse/CASSANDRA-11421?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15210410#comment-15210410 ]
Benedict commented on CASSANDRA-11421: -------------------------------------- I wouldn't necessarily consider it a good idea to cache buffers of unbounded size. Right now it is probably fine, but it is fragile in the face of possible future changes. This is a common problem that should probably be solved generically, though no doubt not here. It's a tremendous shame this encoding differs from DataOutputPlus.writeUTF, and that both persist a length up-front. > Eliminate allocations of byte array for UTF8 String serializations > ------------------------------------------------------------------ > > Key: CASSANDRA-11421 > URL: https://issues.apache.org/jira/browse/CASSANDRA-11421 > Project: Cassandra > Issue Type: Improvement > Components: Core > Reporter: Nitsan Wakart > > When profiling a read workload (YCSB workload c) on Cassandra 3.2.1 I noticed > a large part of allocation profile was generated from String.getBytes() calls > on CBUtil::writeString > I have fixed up the code to use a thread local cached ByteBuffer and > CharsetEncoder to eliminate the allocations. This results in improved > allocation profile, and a mild improvement in performance. > The fix is available here: > https://github.com/nitsanw/cassandra/tree/fix-write-string-allocation -- This message was sent by Atlassian JIRA (v6.3.4#6332)