March 29, 2008

Java math performance

Java 1.6 on an x86 (Intel Core 2 Duo in this case), how much faster are the 4 basic math operations +-*/ when it comes to integer vs floating point operations? We’ve all been taught that integer operations are vastly faster than floating point operations, but that was probably only true when you were taught that back in school.

Now a days 32-bit floating point operations are on par with their integer counter parts. Most modern processors can do most floating point operations in an single instruction, just like integers.

I wrote a micro benchmark doing the same operation 4,000,000 times on the same set of vectors and here are the results in milliseconds:

client	+	-	*	/	sqrt	sin	cos
integer	16	16	15	26
long	30	30	30	120
float	15	15	16	30
double	29	26	27	52	242	4205	4205
fixed	13	12	40	191	427	60	59

Fixed is fixed-point library I am testing. The fixed point sin/cos functions are so fast, since they are pre-calculated tables at start-up. On the other hand, Java’s sin/cos functions are abysmal. Java has strict requirements on sin/cos functions and this issue has been brought up as bug 5005861. This is probably one of the last major Java performance issue. If you need a fast sin, then approximate it.

The table above shows there is no performance difference between integers/floats and longs/doubles, except that double’s divide is faster than long’s!

The above was running without the -server flag. Below we have the flag turned on.

server	+	-	*	/	sqrt	sin	cos
integer	21	115	14	21
long	24	25	25	106
float	12	12	12	29
double	24	24	25	54	87	3317	3260
fixed	14	13	32	189	314	57	64

With the server flag turned on, there is some performance issues at the start of the benchmark, which erroneously shows integer addition and subtracting being worst than with the server flag turned off. I believe this is just a loading issue, and in the real world you’ll see performance at the same level as multiplication. One very interesting data point is Math.sqrt is much faster with the server flag on. This benchmark shows an improvement of almost 3x!

I would say it is probably safe for everybody to use doubles for math intensive applications. I not saying just use doubles everywhere, floats and doubles have their pitfalls as well, but that is for another article (the one sentence summary is “Time and money are valuable, so don’t use a float or double to represent it!”) Performance wise, don’t fret it, go double.

6 Comments »

  1. […] 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960Parts Bmw 750il, Bmw 750i Aftermarket Bimmer PartsParts Bmw 750il, Bmw 750i Aftermarket Bimmer Parts325i discount car auto parts bmw 750il 750il auto replace 1991 bmw 750il review 2006 bmw 750i review 750il auto need 760li seats 750i 750li headlight bulb bmw 750il 760li part bmw 750i twin turbo v8 e38 part finder 750i 850ci promotional 750il 750il imdb 1990 525i parts 540i bmw 750il 850csi v12 m6 bmw 750il 740i parts 740il bmw 750il 750i sheet music usb 2000 bmw 750il leather interior area 51 750i review 735i part finder 1991 bmw 750il 2000 bmw 750il review 750il radiator drain plug bmw 330ci 7 series 750i best 750il aftermarket fast 2001 bmw bmw 750i sale pre owned used car 750il part search american buy 750il auto 1988 bmw 2000 540i wallpaper bmw 750il 750il parts car used bmw buy 740i 750il bmw m5 aftermarket 540i 750il bmw 323i headlight l7 e23 automatic transmission bmw 750il 740il headlight xenon bmw 750il bmw 750i e38 probleme 750i wamp amazon bmw 750il 5.4 l 850i parts discount 850csi bmw 750il flash treiber f

    Pingback by Parts Bmw 750il, Bmw 750i Aftermarket Bimmer Parts — May 21, 2010 @ 16:46

  2. […] 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879801986 Mercedes Benz 420sel Parts Windshield Washer Nozzle Exhaust Manifold Gasket, Find Mercedes Benz Series 420sel - 339.unlockiphone30.net1986 Mercedes Benz 420sel Parts Windshield Washer Nozzle Exhaust Manifold Gasket, Find Mercedes Benz Series 420sel420sel general promotion 420sel central heating mercedes parts windshield washer fluid 420 exhaust mercedes 420sel 420sel aftermarket 1991 mercedes 420sel aftermarket 1986 mercedes benz window regulator apartments mercedes benz 420sel 420sel discount 1990 1989 mercedes benz 560 sec 420sel change oil auto parts 420sel 1986 mercedes benz 420sel part used 1987 mercedes benz 420sel closeout oem 420sel car parts warehouse ac 420sel discount ignition wire 1986 mercedes mercedes benz 420sel parts fuel injector 420sel radiator coupon code 420sel sale ignition wire 420sel mercedes benz used parts 420sel alternative auto 420sel air bags 420sel automotive 1989 mercedes 420sel auction iaa auto 420sel used house 420sel stop brake 420sel problems anti lock brake system 1989 mercedes benz 420sel parts salvage yards cl65 amg 1986 mercedes benz 420sel parts windshield washer nozzle exhaust manifold gasket 420sel custom lebra 1990 420sel mercedes benz parts wheel rim 420sel model sedans mercedes benz 420sel discount car parts disc brake pads 420sel radiator free shipping shock absorber 1984 420sel parts mercedes benz 560sl 420sel cooling system mercedes w107 brake rotors 420sel power steering pump 420sel pt discount 420sel price diagram 420sel oem least 1986 mercedes 420sel 420sel magazine 420sel substitute 1988 420sel parts spark plug wires mercedes benz 560sl 420sel code stereo 420sel radiator core 1987 420 sel for sale used mercedes benz 420sel mercedes benz 420sel headlight 300se 420sel factory direct 1989 mercedes benz 420sel 1988 mercedes auto parts discount 420sel overstock 420sel part used 1987 mercedes benz chevrolet chevy auto leather used mercedes benz 420sel 420sel led automotive 420sel bulb 1987 mercedes turn signal rapidshare 420sel 420sel demo used mercedes 1986 mercedes benz 420sel parts shock absorber mercedes benz 420sel buy used model mercedes benz series 420sel 420sel discount car parts blower motor mercedes 300sdl 420sel discount prices mercedes benz parts 420sel antiques categories 420sel discount water pump mercedes w107 420sel replacement lowest 1989 mercedes 420sel avi 420sel rate 1990 mercedes benz 420sel specifications automatic transmission tv 420sel 420sel maintenance pdf mercedes benz 420sel performance front 420sel radiator promotions sale 420sel 420sel refurb car sales mercedes benz 420sel 420sel rates 420sel auction 1987 mercedes discount oem mercedes benz 420sel 420sel dc 420sel engine 1987 mercedes 420sel part finder 1986 mercedes benz 420sel parts wiper blade 1991 mercedes catalytic converter auction 420sel 1986 mercedes benz 420sel parts spark plug wires cl55 amg 420sel headlight 1989 1991 mercedes benz salvage yards 420sel heads up display 420sel episodes online forums 420sel special promotion mb 420sel promo battery 420sel used birth 1993 mercedes benz 420sel parts inexpensive mercedes benz 420sel 420sel service 420sel 560sec list price 420sel distance select 420sel coolant free shipping 1986 mercedes 420sel used adapter 420sel discount online 1987 mercedes 560sec bonus 420sel 420sel 1986 mercedes headlight bulb replacement parts mercedes benz 420sel bulb 1991 mercedes benz 420sel 420sel hot water 1986 mercedes E100 Headlight Case | Pb1000 Price Watt | Buy Dealers 560sl | Ford E Series | Phaeton Discount Beetle | […]

    Pingback by 1986 Mercedes Benz 420sel Parts Windshield Washer Nozzle Exhaust Manifold Gasket, Find Mercedes Benz Series 420sel - 339.unlockiphone30.net — May 23, 2010 @ 0:52

  3. Good work, keep us posting, you are good writer.

    Comment by flower tattoo designs — June 2, 2010 @ 6:34

  4. nice bolg .nice content ,i found your blog on Acheter des Kamas,.i think i wll back soon

    Comment by likedofuskamas — July 14, 2010 @ 2:58

  5. You made some Good points there. I did a search on the topic and found most people will agree.

    Comment by Tammy Keys — July 28, 2010 @ 7:36

  6. What is the name of template you used in your site ?

    Comment by how to download from youtube — August 27, 2010 @ 12:47

Comment RSS Feed TrackBack

Leave a comment

Powered by WP Hashcash

Powered by WordPress