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 <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