JDK 8 code review request for 6964528: Double.toHexString(double d) String manipulation with + in an append of StringBuilder

Joe Darcy joe.darcy at oracle.com
Fri Feb 1 22:16:34 UTC 2013


Okay; I concede -- webrev with 'p' rather than "p" uploaded:

     http://cr.openjdk.java.net/~darcy/6964528.1

Thanks,

-Joe


On 02/01/2013 02:10 PM, Aleksey Shipilev wrote:
> +1. Appending char is marginally faster as well.
>
> -Aleksey.
>
> On 02.02.2013, at 2:07, Vitaly Davidovich <vitalyd at gmail.com> wrote:
>
>> I'm with Louis on this one.  Since you're changing this code anyway, I
>> don't see any reason to use string here.
>>
>> Sent from my phone
>> On Feb 1, 2013 4:45 PM, "Joe Darcy" <joe.darcy at oracle.com> wrote:
>>
>>> On 02/01/2013 01:41 PM, Louis Wasserman wrote:
>>>
>>>> Would appending the character 'p' instead of the string "p" make any
>>>> difference?
>>> Not a big enough one for me to feel compelled to look into it ;-)
>>>
>>> -Joe
>>>
>>>
>>>> On Fri, Feb 1, 2013 at 1:39 PM, Joe Darcy <joe.darcy at oracle.com <mailto:
>>>> joe.darcy at oracle.com>> wrote:
>>>>
>>>>     Hello,
>>>>
>>>>     Please review a simple refactoring fix in Double.toHexString
>>>>
>>>>         6964528: Double.toHexString(double d) String manipulation with
>>>>     + in an append of StringBuilder
>>>>     http://cr.openjdk.java.net/~**darcy/6964528.0/<http://cr.openjdk.java.net/~darcy/6964528.0/>
>>>>     <http://cr.openjdk.java.net/%**7Edarcy/6964528.0/<http://cr.openjdk.java.net/%7Edarcy/6964528.0/>
>>>>
>>>>     Patch below.
>>>>
>>>>     Thanks,
>>>>
>>>>     -Joe
>>>>
>>>>     --- old/src/share/classes/java/**lang/Double.java  2013-02-01
>>>>     13:36:33.000000000 -0800
>>>>     +++ new/src/share/classes/java/**lang/Double.java  2013-02-01
>>>>     13:36:33.000000000 -0800
>>>>     @@ -1,5 +1,5 @@
>>>>      /*
>>>>     - * Copyright (c) 1994, 2012, Oracle and/or its affiliates. All
>>>>     rights reserved.
>>>>     + * Copyright (c) 1994, 2013, Oracle and/or its affiliates. All
>>>>     rights reserved.
>>>>       * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
>>>>       *
>>>>       * This code is free software; you can redistribute it and/or
>>>>     modify it
>>>>     @@ -289,7 +289,7 @@
>>>>                  return Double.toString(d);
>>>>              else {
>>>>                  // Initialized to maximum size of output.
>>>>     -            StringBuffer answer = new StringBuffer(24);
>>>>     +            StringBuilder answer = new StringBuilder(24);
>>>>
>>>>                  if (Math.copySign(1.0, d) == -1.0)    // value is
>>>>     negative,
>>>>                      answer.append("-");                  // so append
>>>>     sign info
>>>>     @@ -300,8 +300,7 @@
>>>>
>>>>                  if(d == 0.0) {
>>>>                      answer.append("0.0p0");
>>>>     -            }
>>>>     -            else {
>>>>     +            } else {
>>>>                      boolean subnormal = (d < DoubleConsts.MIN_NORMAL);
>>>>
>>>>                      // Isolate significand bits and OR in a
>>>>     high-order bit
>>>>     @@ -324,13 +323,14 @@
>>>>                                    "0":
>>>>      signif.replaceFirst("0{1,12}$"**, ""));
>>>>
>>>>     +                answer.append("p");
>>>>                      // If the value is subnormal, use the E_min exponent
>>>>                      // value for double; otherwise, extract and
>>>>     report d's
>>>>                      // exponent (the representation of a subnormal uses
>>>>                      // E_min -1).
>>>>     -                answer.append("p" + (subnormal ?
>>>>     -                               DoubleConsts.MIN_EXPONENT:
>>>>     -                               Math.getExponent(d) ));
>>>>     +                answer.append(subnormal ?
>>>>     +                              DoubleConsts.MIN_EXPONENT:
>>>>     +                              Math.getExponent(d));
>>>>                  }
>>>>                  return answer.toString();
>>>>              }
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Louis Wasserman
>>>




More information about the core-libs-dev mailing list