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

ASF GitHub Bot commented on LANG-990:
-------------------------------------

GitHub user CodingFabian opened a pull request:

    https://github.com/apache/commons-lang/pull/51

    LANG-990 support appending CharBuffer and use specialized methods

    StrBuilder accepts CharSequences as well as specialized instances like
    String, StringBuffer. If you force one of these implementations through 
generic
    methods, suboptimal code path will be taken.
    This is a problem for any "generic" reuse.
    
    Additionally, it is possible to optimize for CharBuffers which are array 
backed.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/CodingFabian/commons-lang LANG-990

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/commons-lang/pull/51.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #51
    
----
commit 257d6bffc52e56c95ac89760db57bbc1f7358377
Author: Fabian Lange <[email protected]>
Date:   2015-03-13T15:19:29Z

    LANG-990 support appending CharBuffer and use specialized methods when 
possible.
    
    StrBuilder accepts CharSequences as well as specialized instances like
    String, StringBuffer. If you force one of these implementations through 
generic
    methods, suboptimal code path will be taken.
    This is a problem for any "generic" reuse.
    
    Additionally, it is possible to optimize for CharBuffers which are array 
backed.

----


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

Reply via email to