JDK 8 code review request for 6964528: Double.toHexString(double d) String manipulation with + in an append of StringBuilder
Aleksey Shipilev
aleksey.shipilev at oracle.com
Fri Feb 1 22:10:38 UTC 2013
+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