[
https://issues.apache.org/jira/browse/GEODE-6579?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16820470#comment-16820470
]
ASF subversion and git services commented on GEODE-6579:
--------------------------------------------------------
Commit def65d4d9018c43a56ea0de98fe4640c0d4e40c5 in geode's branch
refs/heads/develop from Darrel Schneider
[ https://gitbox.apache.org/repos/asf?p=geode.git;h=def65d4 ]
GEODE-6579: optimize string deserialization (#3381)
Added ThreadLocalByteArrayCache used by readString for ASCII strings less than
65k.
Also added a jmh benchmark for InternalDataSerializer.readString.
It uses a SoftReference to allow the cached byte array
to be garbage collected if the jvm runs low on memory.
> Creating a String during deserialization could be optimized
> -----------------------------------------------------------
>
> Key: GEODE-6579
> URL: https://issues.apache.org/jira/browse/GEODE-6579
> Project: Geode
> Issue Type: Improvement
> Components: serialization
> Reporter: Darrel Schneider
> Assignee: Darrel Schneider
> Priority: Major
> Labels: optimization
> Time Spent: 2h 10m
> Remaining Estimate: 0h
>
> When creating a string during deserialization from data that we know is in
> the ASCII character set (each character can be represented by one byte) we
> currently read all the bytes into a temporary byte array and then create a
> String instance by giving it that byte array. The String constructor has to
> create its own char array and then copy all the bytes into it. After that the
> byte array is garbage.
> We could instead directly create a char array, fill it by reading each byte
> from the DataInput into it and then using reflection to directly set this
> char array as the value field of the String instance we just created (as an
> empty String). This prevents an extra copy of the data and reduces garbage
> creation.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)