It's not a secret anymore!*
The moose likes Performance and the fly likes Are ints better? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


JavaRanch » Java Forums » Java » Performance
Bookmark "Are ints better?" Watch "Are ints better?" New topic
Author

Are ints better?

Nathan Pruett
Bartender

Joined: Oct 18, 2000
Posts: 4121

Are ints any better to use than other integral types? (i.e. byte, short, long) I know that in C/C++ most programmers use 32-bit numbers (which in Java would be int) since most processors are 32-bit, and thus an operation using a 32-bit number would (could?) be faster/efficient/better than one using a number of a different size... Is there any truth to this in Java? With the VM and all I'm not sure how big an impact this would have on speed of execution...
-Nate


-Nate
Write once, run anywhere, because there's nowhere to hide! - /. A.C.
Peter Haggar
author
Ranch Hand

Joined: Jan 03, 2001
Posts: 106
On my tests, an int, byte, and short are about the same. Long, double and float are slower due to their size and, presumably, precision issues.
Here is some code I had laying around and some of its output on JDK 1.2.1.

Admittedly, this is quick and dirty. Your mileage can vary on other VMs.
Peter Haggar
------------------
Senior Software Engineer, IBM
author of: Practical Java


Senior Software Engineer, IBM
author of: Practical Java
Peter Gragert
Ranch Hand

Joined: Jan 16, 2001
Posts: 424
Dear Peter
You should correct the message here before
Example:
public static void forint(int val)
{ int j=0;
for (int i=0;i j += i; }
a lot of stuff is missing!
All over the example.
Peter
Peter Gragert
Ranch Hand

Joined: Jan 16, 2001
Posts: 424
I corrected the source (what was probably meant)
And got this:
With Suns JDK input parameter 100000
Numbers were different
forint 260
forlong 621
fordouble 892
forfloat 590
forshort 281
forbyte 531
With Symantecs Java but input was 10000000
forint 250
forlong 241
fordouble 270
forfloat 240
forshort 251
forbyte 250
So all nearly the same and a 100 times faster.
You see?
Peter Tran
Bartender

Joined: Jan 02, 2001
Posts: 783
Peter Gragert,
Peter Haggar's program is correct, the UBB software is treating is i < val statement as an HTML tag if you don't put a space between the "<" and the variabl "val". If you click on the edit button to his post, you can do a cut-n-paste from his program and you'll see that it's complete.

-Peter Tran
[This message has been edited by Peter Tran (edited February 26, 2001).]
Jack Shirazi
Author
Ranch Hand

Joined: Oct 26, 2000
Posts: 96
My tests in a variety of environments show that sometimes they are the same, but more often int is faster. Also, Peter's test was for local variables. Try it also with heap variables (instance variables of objects) and you should see a difference.
There is no specific guarantee of anything in the way of one type is faster than another from Java. But in general the data types shorter than int get widened to int for many arithmetic operations (Peter's test here used operations that were not widened), and double and long assignments and reads are not guaranteed atomic, where ints are.
I would recommend using int rather than other data types for speed, where that doesn't change the logic of the code.
--Jack Shirazi http://www.JavaPerformanceTuning.com/
Peter Haggar
author
Ranch Hand

Joined: Jan 03, 2001
Posts: 106
My apologies for the mangled code. This is not the first time the brackets got me. I would have thought enclosing it in would alleviate the problem...but I guess not.
Peter Haggar
------------------
Senior Software Engineer, IBM
author of: Practical Java
 
GeeCON Prague 2014
 
subject: Are ints better?