RFR 8170348: Appendable.appendN(char, int) method to append multiple copies of char
Ivan Gerasimov
ivan.gerasimov at oracle.com
Sun Dec 11 21:03:02 UTC 2016
Thank you Peter for the suggestion!
> An alternative to a new virtual method on Appendable (or maybe a
> complement to it) could be a special internal CharSequence
> implementation (CharRepetitions) with a static factory method on
> CharSequence like the following:
>
I think it's a clever idea!
Though it might be harder to implement the special optimized handling of
such sequences by Appendable implementations outside java.lang.
> http://cr.openjdk.java.net/~plevart/jdk9-dev/8170348_Appendable.appendN.alt/webrev.01/
>
>
> Together with special-case optimization in
> AbstractStringBuilder.append(CharSequence) it can perform equally well
> when JITed. I took your benchmark and modified it a bit:
>
> http://cr.openjdk.java.net/~plevart/jdk9-dev/8170348_Appendable.appendN.alt/AppendNTest.java
>
>
> ...I moved sb.setLength(0) into a special @Setup method so that it
> doesn't cause the remaining tested code to be over-optimized. You can
> try just this change in your benchmark and you'll notice a difference.
Actually, in the benchmark I tried to follow the suggestions found here:
http://hg.openjdk.java.net/code-tools/jmh/file/ef24f1b5de08/jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_38_PerInvokeSetup.java
Note, how the Level.Invocation setup is avoided in the measureRight
benchmark.
With kind regards,
Ivan
More information about the core-libs-dev
mailing list