commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mikhail Mazursky (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (LANG-990) Avoid String allocation in StrBuilder.append(CharSequence)
Date Sun, 30 Mar 2014 08:44:15 GMT

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

Mime
View raw message