[ 
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)

Reply via email to