commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Fabian Lange (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (LANG-990) Avoid String allocation in StrBuilder.append(CharSequence)
Date Fri, 13 Mar 2015 15:25:39 GMT

    [ https://issues.apache.org/jira/browse/LANG-990?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14360507#comment-14360507
] 

Fabian Lange commented on LANG-990:
-----------------------------------

I created a PR out of the patch. please credit [~ash2k] for the improvement. I just polished
it a bit more.
I can confirm that this is a sensible patch. Tough benchmarking it doesn't make a lot of sense.
The big penalty you pay is object creation, which is usually not visible in a JMH benchmark.


> 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-v3.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.3.4#6332)

Mime
View raw message