Java性能优化--for循环

最近在学习关于Java性能优化及JVM的一些知识,无意中想起for循环的应用,毕竟太多的算法题和实际开发都会用到它,也就萌生了对它进行优化的想法。

在实践之余,我也在网上查阅了很多资料,其中找到了这样一篇博文https://blog.csdn.net/liushuijinger/article/details/41546347,写的很好,记录下来以便日后查阅。

不过这里要提出的是,同一段代码在不同机器和不同版本jdk中运行可能是会出现很大差别的,我用的jdk版本:1.8.0_161,CPU:Intel(R) Core(TM) i7-4720HQ CPU @ 2.60GHz。

以下是我进行的循环嵌套优化测试:

long stratTime = System.nanoTime();
for (int i = 0; i < 10000; i++) {
    for (int j = 0; j < 10; j++) {
    }
}
long endTime = System.nanoTime();
System.out.println("外大内小耗时:" + (endTime - stratTime));

stratTime = System.nanoTime();
for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10000; j++) {
    }
}
endTime = System.nanoTime();
System.out.println("外小内大耗时:" + (endTime - stratTime));

可以看出,在10*10000的数量级上外小内大循环是优于外大内小循环的,再看看下面的测试:

long stratTime = System.nanoTime();
for (int i = 0; i < 100000; i++) {
	for (int j = 0; j < 10; j++) {
	}
}
long endTime = System.nanoTime();
System.out.println("外大内小耗时:" + (endTime - stratTime));

stratTime = System.nanoTime();
for (int i = 0; i < 10; i++) {
	for (int j = 0; j < 100000; j++) {
	}
}
endTime = System.nanoTime();
System.out.println("外小内大耗时:" + (endTime - stratTime));

在10*100000的数量级上外大内小已经远超外小内大循环,数量级越大,外大内小循环的优势也就越大。因此对于这个循环嵌套优化应该是有待讨论的。

以上是我对于for循环优化提出的异议,其余请参考所提及的博文。

欢迎大佬们指教或提出异议。

你可能感兴趣的:(Java)