[
https://issues.apache.org/jira/browse/LANG-990?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13954620#comment-13954620
]
Mikhail Mazursky commented on LANG-990:
---------------------------------------
Anything prevents my patch from being committed? I really want this patch to be
in the next release because we use StrBuilder to copy large buffers and the
main point is to reduce heap pressure by eliminating intermediate objects and
copies.
We use Guava's CharStreams.copy(Reader, StrBuilder) that uses intermediate
CharBuffer to hold data. Then it passes it to the
StrBuilder.append(CharSequence) were it is converted to String for EACH
read/write iteration - that is what I want to avoid.
> Avoid String allocation in StrBuilder.append(CharSequence)
> ----------------------------------------------------------
>
> Key: LANG-990
> URL: https://issues.apache.org/jira/browse/LANG-990
> Project: Commons Lang
> Issue Type: Improvement
> Components: lang.text.*
> Affects Versions: 3.3.1
> Reporter: Mikhail Mazursky
> Fix For: Patch Needed
>
> Attachments: LANG-990-v2.patch, LANG-990.patch
>
>
> StrBuilder.append(CharSequence) and StrBuilder.append(CharSequence, int, int)
> can be optimized for the case when CharBuffer is passed. Current
> implementation calls toString() method that allocates a new String. In case
> when CharBuffer.hasArray() returns true the buffer-backing char array can be
> accessed directly to copy chars from it.
> Also an instanceOf StrBuilder check can be added to
> StrBuilder.append(CharSequence) and StrBuilder.append(CharSequence, int, int)
> to avoid toString() in that case too (StrBuilder can be passed as
> CharSequence in some cases).
--
This message was sent by Atlassian JIRA
(v6.2#6252)