[ https://issues.apache.org/jira/browse/CASSANDRA-11421?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15210420#comment-15210420 ]
Nitsan Wakart commented on CASSANDRA-11421: ------------------------------------------- Fair point. You could set a max size and fall back to whichever method suits. The length can be corrected post serialization, e.g. : int writerIndex = cb.writerIndex(); cb.writeShort(0); int lengthBytes = ByteBufUtilTemp.writeUtf8(cb, str); cb.setShort(writerIndex, lengthBytes); > 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)