Thank you Martin for review!
On 01.07.2015 0:59, Martin Buchholz wrote:
This looks good.
Because we already have append(String) it *may* be a good idea to add
append(String, int, int).
I found only a dozen of the places in JDK where this method is
applicable, so I thought it doesn't seem to worth a change in the API.
See also my failure to add getChars to CharSequence itself.
If we (you?) could make that happen, that would eliminate the need for
instanceof String etc.
Yes, it was my initial thought too:
http://mail.openjdk.java.net/pipermail/core-libs-dev/2015-May/033285.html
I guess, it's not a problem to add default CharSequence.getChars(). The
problem is to call it safely.
If there were a way to enforce all the derived classes except a few
trusted stick to the default implementation, it would be possible to use
getChars in sb.append().
For now, I limited the scope of the change, so that changing
sb.append(str.substring(a, b)) to sb.append(str, a, b) will be at least
no slower.
Sincerely yours,
Ivan
On Sat, Jun 27, 2015 at 7:23 AM, Ivan Gerasimov
<ivan.gerasi...@oracle.com <mailto:ivan.gerasi...@oracle.com>> wrote:
Hello!
AbstractStringBuilder, which is base for StringBuilder and
StringBuffer has a method for appending a sub-sequence of a
CharSequence.
Internally, it copies one char at a time in a loop, picking them
up with CharSequence.charAt() method.
For the case when the argument is a String, it can be done more
efficiently, by a call to String.getChars().
Since String is a final class, it should be safe to pass 'value'
to its method.
I've also found a few places in JDK where code can be done more
efficient, using this optimization.
Would you please help review this fix?
BUGURL: https://bugs.openjdk.java.net/browse/JDK-8077242
WEBREV: http://cr.openjdk.java.net/~igerasim/8077242/02/webrev/
<http://cr.openjdk.java.net/%7Eigerasim/8077242/02/webrev/>
Sincerely yours,
Ivan