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