1.嵌套循环中,应把数据级小的放在外面,数量级大的放在里面。
- for (int i = 0; i <10 ; i++) {
- for (int j = 0; j < 10000000; j++) {
- }
- }
- 外大内小耗时:200192114
- 外小内大耗时:97995997
- stratTime = System.nanoTime();
- for (int i = 0; i < 10000000; i++) {
- i=i*a*b;
- }
- endTime = System.nanoTime();
- System.out.println("未提取耗时:"+(endTime - stratTime));
应改为:
- stratTime = System.nanoTime();
- c = a*b;
- for (int i = 0; i < 10000000; i++) {
- i=i*c;
- }
- endTime = System.nanoTime();
- System.out.println("已提取耗时:"+(endTime - stratTime));
两者耗时对比:
- 未提取耗时:45973050
- 已提取耗时:1955
3.消除循环终止判断时的方法调用
- stratTime = System.nanoTime();
- for (int i = 0; i < list.size(); i++) {
- }
- endTime = System.nanoTime();
- System.out.println("未优化list耗时:"+(endTime - stratTime));
-
- stratTime = System.nanoTime();
- int size = list.size();
- for (int i = 0; i < size; i++) {
- }
- endTime = System.nanoTime();
- System.out.println("优化list耗时:"+(endTime - stratTime));
两者耗时比对
- 未优化list耗时:27375
- 优化list耗时:2444
4.异常捕获
大家都知道,捕获异常是很耗资源的,所以不要讲try catch放到循环内部,优化后同样有好几个数量级的提升。
这点具体看业务
原文链接
https://www.cnblogs.com/softwareofjava/p/7278763.html