java 常用最实用的性能优化...
2017-11-02 11:03
337 查看
工作中,很多时候我们只是为了完成任务而编码...缺少思考的时间...下面谈谈几个优化...虽然很基础,但是很实用.....
嵌套for循环...说到循环,大家一定没少用...但是有时候就是因为一行代码的顺序直接影响整个方法的响应时间...
long stratTime = System.nanoTime();
for (int i = 0; i < 10000000; i++) {
for (int j = 0; j < 10; j++) {
system.out.println("那你很棒棒哦!!!")
}
}
long endTime = System.nanoTime();
System.out.println("总耗时:"+ (endTime - stratTime));
输出结果: 总耗时:4573255
改成 :
long stratTime = System.nanoTime();
for (int i = 0; i <10 ; i++) {
for (int j = 0; j < 10000000; j++) {
system.out.println("那你很棒棒哦!!!")
}
}
long endTime = System.nanoTime();
System.out.println("总耗时:"+(endTime - stratTime));
输出结果: 总耗时:12840246
由以上对比可知,优化后性能提升了一倍,嵌套循环应该遵循“外小内大”的原则,这就好比你复制很多个小文件和复制几个大文件的区别。
l循环list,想必用的最多,但是可能因为习惯性的i<list.size(),导致性能下降了一半...
例如:
List<?> list = xxx.findByxxx();
for (int i = 0; i <
list.size(); i++) {
//处理业务逻辑......
}
for每执行一次,list.size()都会执行一次,这无疑会大大降低系统性能...如果改成:
int listSize = list.size();
for(int i = 0 ; i<listSize;i++){
//业务逻辑...
}
性能提升至少三分之一...
异常处理...
for内部捕获...
long stratTime = System.nanoTime();
for (int i = 0; i < 10000000; i++) {
try {
} catch (Exception e) {
}
}
long endTime = System.nanoTime();
System.out.println("在内部捕获异常耗时:"+(endTime - stratTime));
for外部捕获...
long stratTime = System.nanoTime();
try {
for (int i = 0; i < 10000000; i++) {
}
} catch (Exception e) {
}
long endTime = System.nanoTime();
System.out.println("在外部捕获异常耗时:"+(endTime - stratTime));
在内部捕获异常耗时:12150142
在外部捕获异常耗时:1955
捕获异常是很耗资源的,所以不要把try catch放到循环内部,优化后性能,响应速度提升数倍...
嵌套for循环...说到循环,大家一定没少用...但是有时候就是因为一行代码的顺序直接影响整个方法的响应时间...
long stratTime = System.nanoTime();
for (int i = 0; i < 10000000; i++) {
for (int j = 0; j < 10; j++) {
system.out.println("那你很棒棒哦!!!")
}
}
long endTime = System.nanoTime();
System.out.println("总耗时:"+ (endTime - stratTime));
输出结果: 总耗时:4573255
改成 :
long stratTime = System.nanoTime();
for (int i = 0; i <10 ; i++) {
for (int j = 0; j < 10000000; j++) {
system.out.println("那你很棒棒哦!!!")
}
}
long endTime = System.nanoTime();
System.out.println("总耗时:"+(endTime - stratTime));
输出结果: 总耗时:12840246
由以上对比可知,优化后性能提升了一倍,嵌套循环应该遵循“外小内大”的原则,这就好比你复制很多个小文件和复制几个大文件的区别。
l循环list,想必用的最多,但是可能因为习惯性的i<list.size(),导致性能下降了一半...
例如:
List<?> list = xxx.findByxxx();
for (int i = 0; i <
list.size(); i++) {
//处理业务逻辑......
}
for每执行一次,list.size()都会执行一次,这无疑会大大降低系统性能...如果改成:
int listSize = list.size();
for(int i = 0 ; i<listSize;i++){
//业务逻辑...
}
性能提升至少三分之一...
异常处理...
for内部捕获...
long stratTime = System.nanoTime();
for (int i = 0; i < 10000000; i++) {
try {
} catch (Exception e) {
}
}
long endTime = System.nanoTime();
System.out.println("在内部捕获异常耗时:"+(endTime - stratTime));
for外部捕获...
long stratTime = System.nanoTime();
try {
for (int i = 0; i < 10000000; i++) {
}
} catch (Exception e) {
}
long endTime = System.nanoTime();
System.out.println("在外部捕获异常耗时:"+(endTime - stratTime));
在内部捕获异常耗时:12150142
在外部捕获异常耗时:1955
捕获异常是很耗资源的,所以不要把try catch放到循环内部,优化后性能,响应速度提升数倍...
相关文章推荐
- java程序性能优化---2--2.2常用优化组件和方法
- java常用的性能优化
- java性能优化常用技巧
- Java 语言常用性能优化技巧介绍
- 常用优化组件和方法- Java程序性能优化--让你的Java程序更快、更稳定
- java几个常用的性能优化细节
- 35个Java代码性能优化总结
- ASP.NET中常用的26个优化性能方法
- Java性能优化技巧集锦
- Java 性能优化技巧集锦 (4)
- Java 性能调优 性能优化策略
- 26个ASP.NET常用性能优化方法
- java代码性能优化
- ASP.NET中26个常用性能优化方法
- 10种简单的Java性能优化
- 每天学点java性能优化之字符串处理优化
- Java性能优化记录
- Java 性能优化实战记录(1)---定位并分析耗cpu最多的线程
- 35 个 Java 代码性能优化总结