RFR [8054221] StringJoiner imlementation optimization
Ivan Gerasimov
ivan.gerasimov at oracle.com
Wed Aug 6 09:47:54 UTC 2014
On 06.08.2014 10:14, Martin Buchholz wrote:
> 39 private final static String PREFIXES[] = {"", "{", "@#$%"};
> This C style syntax is not good Java style - use String[] instead.
>
Thanks! fixed
> 177 if (addLen == 0) {
> 178 compactElts();
> 179 return size == 0 ? "" : elts[0];
> 180 }
> I'm concerned about the extra String[8] created by compactElts. We
> assume that StringJoiners are all temporary objects, so don't bother
> creating that shorter String[8] to hold the one sole element on
> compaction - just reuse the original array (but should we null out the
> entries? probably)
>
The benchmark showed that allocating a new array is faster than
nullifying the existing one.
But if we set the entries to null in the loop that is already there, it
will probably be no slower than allocation.
Here's the updated webrev:
http://cr.openjdk.java.net/~igerasim/8054221/2/webrev/
Sincerely yours,
Ivan
>
> On Tue, Aug 5, 2014 at 12:19 PM, Ivan Gerasimov
> <ivan.gerasimov at oracle.com <mailto:ivan.gerasimov at oracle.com>> wrote:
>
>
> But if we do that, I think we should optimize size == 0 as
> well, thus:
>
> if (addLen == 0 && size <= 1)
> return (size == 0) ? "" : elts[0];
>
> Yes, done.
>
> Or we can just call compactElts() if addLenn == 0, so it will work
> for any size.
>
> Updated the webrev at the same location:
> http://cr.openjdk.java.net/~igerasim/8054221/1/webrev/
> <http://cr.openjdk.java.net/%7Eigerasim/8054221/1/webrev/>
>
> Sincerely yours,
> Ivan
>
>
More information about the core-libs-dev
mailing list