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 Sat, 14 Mar 2015 12:05:38 GMT

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

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

Sure,
I did a quick allocation profiling with JProfiler
a 50 char char buffer append to same string builder 10k times generates now 3.274MB Objects
the old code generated 4.714MB
Its obvious that it allocates less, the exact amount depends on the use case.
The time gain is insignificant, but existing as well.

> 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 Mazurskiy
>              Labels: github
>             Fix For: Review Patch
>
>         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