 # division operation query..!

which operation is faster…? (a & b are int type) ,each operation is performed 10^9 times…!

1. (a/b)
2. (a%b)
1 Like

I have written a JAVA code to test this, as I also was very curious that which one is faster.

``````class Faster
{
public static void main(String args[])
{
long x=10,y=1;
long a1=System.nanoTime();

for(long i=1;i<=10000;i++)
x=x/y;

long a2=System.nanoTime();

System.out.println("Time taken for division is "+(a2-a1)+" nanoseconds");

long t;

a1=System.nanoTime();

for(long i=1;i<=10000;i++)
t=x%y;

a2=System.nanoTime();

System.out.println("Time taken for modulus is  "+(a2-a1)+" nanoseconds");
}
}
``````

I was shocked to see the results. I thought modulus operatio will take lesser time. but see the results( from Console ) Here is the link Link to the Program. If you run this link, it will show that the Division is much much much more faster than Modulus operation!

I think this would have helped you. It’s kinda obvious that % will be at least not faster than /. And both of them are really slow.

Unless you have some special case, like dividing by power of 2, there is no fast way to calculate a/b.

And there is no way to calculate % fast - there is nothing significantly better than calculating it using followin logic: a%b=a-(a/b)*b.

Usually % should work with same speed as /. Generally CPUs return both quotient and remainder Division is faster than modulo. Use Euclid algorithm to find modulo using division.

numerator=(denominator*result)+remainder

I have no idea how things work in Java, but for C++ such testing would look at least funny After rewriting this code to C++ and using properly configured compiler… You have cold calculations here, therefore everything will be ignored, except last / operation and last % operation, and they will be optimized by bitwise operations (because you are dividing by power of 2). That makes it really funny - code to test % and / does 0 % and / operations No offence - I have no idea about Java things, probably your code is OK Just a funny observation from C++ user.

no brother, JAVA is likely as CPP you are also right, I should have used Bitwise Shift operations. Thanks 