mrglavas 2004/09/30 20:43:22 Modified: java/src/org/apache/xerces/impl/dv/xs DoubleDV.java FloatDV.java Log: Avoid creating objects when testing whether two
doubles or floats are identical. We can determine whether two 0.0' values are identical by examining their bits. Revision Changes Path 1.10 +9 -5 xml-xerces/java/src/org/apache/xerces/impl/dv/xs/DoubleDV.java Index: DoubleDV.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dv/xs/DoubleDV.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- DoubleDV.java 30 Sep 2004 19:35:19 -0000 1.9 +++ DoubleDV.java 1 Oct 2004 03:43:21 -0000 1.10 @@ -103,11 +103,15 @@ return true; } - Double d1 = new Double(value); - Double d2 = new Double(val.value); + if (value == val.value) { + return (value != 0.0d || + (Double.doubleToLongBits(value) == Double.doubleToLongBits(val.value))); + } - //Double values of 0.0 and -0.0 return false for Double#equals method - return d1.equals(d2); + if (value != value && val.value != val.value) + return true; + + return false; } private int compareTo(XDouble val) { 1.10 +9 -5 xml-xerces/java/src/org/apache/xerces/impl/dv/xs/FloatDV.java Index: FloatDV.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dv/xs/FloatDV.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- FloatDV.java 30 Sep 2004 19:35:19 -0000 1.9 +++ FloatDV.java 1 Oct 2004 03:43:21 -0000 1.10 @@ -104,11 +104,15 @@ return true; } - Float f1 = new Float(value); - Float f2 = new Float(val.value); + if (value == val.value) { + return (value != 0.0f || + (Float.floatToIntBits(value) == Float.floatToIntBits(val.value))); + } - //Float values of 0.0 and -0.0 return false for Float#equals method - return f1.equals(f2); + if (value != value && val.value != val.value) + return true; + + return false; } private int compareTo(XFloat val) { --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]