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

- (a/b)
- (a%b)

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

- (a/b)
- (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

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

Division is faster than modulo. Use Euclid algorithm to find modulo using division.

numerator=(denominator*result)+remainder