Hi,

 good suggestions, I'll incorporate them.

/Claes

On 2014-07-14 13:08, Andrej Golovnin wrote:
Hi Claes,

in the method Formatter$FormatSpecifier#justify(String) you can pre-calculate the capacity of the StringBuilder to avoid array copying, e.g. instead of

2931             StringBuilder sb = new StringBuilder();

use this one:

2931             StringBuilder sb = new StringBuilder(s.length() + sp);

And in the method Formatter$FormatSpecifier#justify(StringBuilder) you can avoid creation of the StringBuilder object in the line 2956, e.g. instead of:

2956                 StringBuilder tmp = new StringBuilder(sp);
2957                 for (int i = 0; i < sp; i++) {
2958                     tmp.append(' ');
2959                 }
2960                 sb.insert(0, tmp);

you can write this:

2956                 char[] tmp = new char[sp];
2957                 Arrays.fill(tmp, ' ');
2958                 sb.insert(0, tmp);

It's not a big improvement but maybe you can change the line

3781 exp.append("0").append(len - 1);

to use the character-based API to append a single character.

Best regards,
Andrej Golovnin

On Mon, Jul 14, 2014 at 12:07 PM, Claes Redestad <claes.redes...@oracle.com <mailto:claes.redes...@oracle.com>> wrote:

    Hi,

     please review this patch which optimizes away some allocations
    from java.util.Formatter and achieve 1.1-1.3x speedups of micros
    targetting String.format. See bug for more details.

     webrev: http://cr.openjdk.java.net/~redestad/8050142/webrev.0
    <http://cr.openjdk.java.net/%7Eredestad/8050142/webrev.0>
     bug: https://bugs.openjdk.java.net/browse/JDK-8050142

     Testing: JPRT, jtreg (java/lang/String, java/util/Formatter),
    SPECjbb2013 and microbenchmarks

     Thanks!

     /Claes



Reply via email to