问题:java中,位移没有比用乘法快么?还是程序写得不对
今天看到有个问题,用最有效率的方法算出2乘以8等於几,按照以前 C的经验,位移比较快,这个题的答案也是2<<3最有效率
但是写了个代码试了下,发现位移还比*慢一点,为什么?是不是代码写的不对,以下是代码:
public static void main(String []args){
int a=2;
int b=2;
int aResult;
int bResult;
long startTime;
long endTime;
long time;
startTime=System.currentTimeMillis();
for(int i=0;i<100000000;i++){
aResult=a<<3;
}
endTime=System.currentTimeMillis();
time=endTime-startTime;
System.out.println("位移100000000次时间:"+time);
startTime=System.currentTimeMillis();
for(int i=0;i<100000000;i++){
bResult=b*8;
}
endTime=System.currentTimeMillis();
time=endTime-startTime;
System.out.println("乘法100000000次时间:"+time);
}
基本上每次都是位移慢几毫秒,是不是写的程序哪里没考虑到呢?