public static void main(String[] args){
int aa = 100;
int bb = 200;
long d1 = System.currentTimeMillis();
for(int i=0;i<2000000000;i++){
aa = aa ^ bb;
bb = aa ^ bb;
aa = aa ^ bb;
}
long d2 = System.currentTimeMillis();
System.gc();
long d3 = System.currentTimeMillis();
for(int i=0;i<2000000000;i++){
int cc = aa;
aa = bb;
bb = cc;
}
long d4 = System.currentTimeMillis();
System.out.println(d2 - d1);
System.out.println(d4 - d3);
}
如上代码进行测试,发现第一段for 执行要2秒左右,第二段只需要2ms。
但如果把两个for 里面的测试段交换,发现运行时间相差无几。
造成这个现象的原因是什么?
怎样才能正确比较两种算法的运行时间效率?