这里我们直接给出结论,加减乘的性能相当,除法非常慢,对于除2,除4等2的整次幂,我们建议使用 >> 运算符
- 测试【+ 、- 、 * 、 /】加减乘除 运算符
- 测试Java中的移位运算符【<< 、>>】
public class Demo{
private final int anInt = Integer.MAX_VALUE;
//21亿次+
public void funAdd() {
long i1=System.currentTimeMillis();
int sum=0;
for(int i = 0; i< anInt; i++) {
sum+=i;
}
System.out.println(anInt+"次+:"+(System.currentTimeMillis()-i1));
}
//21十亿次-
public void funSubtract() {
long i1=System.currentTimeMillis();
int sum=0;
for(int i = 0; i< anInt; i++) {
sum-=i;
}
System.out.println(anInt+"次-:"+(System.currentTimeMillis()-i1));
}
//21亿次*
public void funMultiply() {
long i1=System.currentTimeMillis();
int sum=1;
for(int i=0;i
sum*=2;
}
System.out.println(anInt+"次*:"+(System.currentTimeMillis()-i1));
}
//21亿次/
public void funDivide() {
long i1=System.currentTimeMillis();
int sum=Integer.MAX_VALUE;
for(int i=2;i
sum/=2;
}
System.out.println(anInt+"次/:"+(System.currentTimeMillis()-i1));
}
public static void main(String []args) {
Demo demo = new Demo();
// + 正常
demo.funAdd();
// - 正常
demo.funSubtract();
// * 正常
demo.funMultiply();
// / 慢
demo.funDivide();
}
}
都说算术运算符,到底是谁更快呢?
以下放出程序运行结果:
结果分析:
加号 + :正常
减号 - :正常
乘号 * :正常
除号 / :较慢
那么如何让这些底层操作更快呢?
我们想到了Java中的位运算。
我们测试最常用的<<1和>>1
//21亿次<<1 等效*2
public void funMultiplyBit() {
long i1=System.currentTimeMillis();
int sum=1;
for(long i = 0; i< anInt; i++) {
sum= sum << 1;
}
System.out.println(anInt+"次位乘2:"+(System.currentTimeMillis()-i1));
}
//21亿次>>1 等效/2
public void funDivideBit() {
long i1=System.currentTimeMillis();
int sum=Integer.MAX_VALUE;
for(long i = 0; i< anInt; i++) {
sum=sum>>1;
}
System.out.println(anInt+"次位除2:"+(System.currentTimeMillis()-i1));
}
以下放出测试结果:
结果分析:
除号 / :非常慢
右移>>1等效除:非常快
左移<<1等效乘:正常速度
所以我们推荐在整数的运算中,优先使用 【>> 1】 来代替 【/ 2】可大大提升程序性能



