NutzCN Logo
问答 关于用异或和用临时变量的交换两个数的算法效率研究,效率比较算法是不是有问题?
发布于 3057天前 作者 tidus5 1960 次浏览 复制 上一个帖子 下一个帖子
标签:
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 里面的测试段交换,发现运行时间相差无几。
造成这个现象的原因是什么?
怎样才能正确比较两种算法的运行时间效率?

1 回复

这种测试的起码要求:

预热,前后顺序的排列组合,循环跑3次以上

来自炫酷的 NutzCN

添加回复
请先登陆
回到顶部