+1. Appending char is marginally faster as well. -Aleksey.
On 02.02.2013, at 2:07, Vitaly Davidovich <vita...@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.da...@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.da...@oracle.com <mailto: >>> joe.da...@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 >> >>