Code review request for 6908131 Pure Java implementations of StrictMath.floor(double) &StrictMath.ceil(double)
Jeff Hain
jeffhain at rocketmail.com
Thu Jan 21 20:58:16 UTC 2010
Dmitry,
From your bench, I see FloorCeil methods get in trouble
with 64 bits architecture, but I never ran anything on 64 bits yet.
I ran your bench on my laptop:
- DELL inspiron 9400, with (two) Genuine Intel T2300 @ 1.666GHz.
- java.runtime.version=1.6.0_11-b03
- java.class.version=50.0
- os.name=Windows XP
- os.arch=x86
- os.version=5.1
I added two patterns:
- pattern3 ("common" case (for doubles) of non-integer values) {
0.1, -0.1,
1e4+0.1, -1e4-0.1,
1e8+0.1, -1e8-0.1,
1e12+0.1, -1e12-0.1,
(1L<<52)/1.1, -(1L<<52)/1.1}
- pattern4 (case of integer values) {
0.0, -0.0,
1e4, -1e4,
1e8, -1e8,
(1L<<52), -(1L<<52),
(1L<<60), -(1L<<60)}
I also added test of the pure Java StrictMath class (which is the one you ran
as "StrictMath" in your bench?) posted on this subject: "StrictMath_JD".
Here is what I got:
-----------------------------------------
- CLIENT
-----------------------------------------
pattern 1:
empty took 4,42 nsec
Math.ceil took 63,77 nsec
Math.floor took 67,55 nsec
StrictMath.ceil took 64,20 nsec
StrictMath.floor took 68,76 nsec
StrictMath_JD.ceil took 52,58 nsec
StrictMath_JD.floor took 53,57 nsec
FloorCeil.ceil took 24,31 nsec
FloorCeil.floor took 18,37 nsec
pattern 2:
empty took 4,50 nsec
Math.ceil took 110,95 nsec
Math.floor took 110,42 nsec
StrictMath.ceil took 111,38 nsec
StrictMath.floor took 110,97 nsec
StrictMath_JD.ceil took 48,95 nsec
StrictMath_JD.floor took 49,38 nsec
FloorCeil.ceil took 23,29 nsec
FloorCeil.floor took 20,81 nsec
pattern 3:
empty took 4,39 nsec
Math.ceil took 111,72 nsec
Math.floor took 114,48 nsec
StrictMath.ceil took 113,68 nsec
StrictMath.floor took 114,32 nsec
StrictMath_JD.ceil took 60,23 nsec
StrictMath_JD..floor took 60,13 nsec
FloorCeil.ceil took 27,11 nsec
FloorCeil.floor took 23,77 nsec
pattern 4:
empty took 4,38 nsec
Math.ceil took 113,49 nsec
Math.floor took 113,34 nsec
StrictMath.ceil took 110,35 nsec
StrictMath.floor took 112,95 nsec
StrictMath_JD.ceil took 43,69 nsec
StrictMath_JD.floor took 44,28 nsec
FloorCeil.ceil took 22,09 nsec
FloorCeil.floor took 18,71 nsec
-----------------------------------------
- SERVER
-----------------------------------------
pattern 1:
empty took 2,40 nsec
Math.ceil took 64,61 nsec
Math.floor took 65,14 nsec
StrictMath.ceil took 63,93 nsec
StrictMath.floor took 65,99 nsec
StrictMath_JD.ceil took 37,52 nsec
StrictMath_JD.floor took 39,77 nsec
FloorCeil.ceil took 21,36 nsec
FloorCeil.floor took 13,96 nsec
pattern 2:
empty took 2,23 nsec
Math.ceil took 112,42 nsec
Math.floor took 110,88 nsec
StrictMath.ceil took 112,05 nsec
StrictMath.floor took 113,54 nsec
StrictMath_JD.ceil took 33,98 nsec
StrictMath_JD.floor took 33,97 nsec
FloorCeil.ceil took 22,09 nsec
FloorCeil.floor took 16,75 nsec
pattern 3:
empty took 2,19 nsec
Math.ceil took 113,67 nsec
Math.floor took 113,53 nsec
StrictMath.ceil took 114,46 nsec
StrictMath.floor took 115,02 nsec
StrictMath_JD.ceil took 44,19 nsec
StrictMath_JD.floor took 43,57 nsec
FloorCeil.ceil took 25,57 nsec
FloorCeil.floor took 20,95 nsec
pattern 4:
empty took 2,45 nsec
Math.ceil took 108,56 nsec
Math.floor took 112,96 nsec
StrictMath.ceil took 109,43 nsec
StrictMath.floor took 113,14 nsec
StrictMath_JD.ceil took 30,18 nsec
StrictMath_JD..floor took 31,07 nsec
FloorCeil.ceil took 18,11 nsec
FloorCeil.floor took 15,91 nsec
-----------------------------------------
Jeff
PS : The ceil and floor I posted here are an extract of a FastMath class (I already
see some people in this mailing list invoking the gods against me while having
a heart attack at the hearing of this class name) I did, and put on source
forge (I already told about it in this list few months ago): maybe some of
you might want to take a look at it (it's called "FastMath", but not ALL of
its treatments are wrong...).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/core-libs-dev/attachments/20100121/9ef6c03c/attachment.html>
More information about the core-libs-dev
mailing list