JAVA程序性能调优笔记(3)-有助于改善性能的技巧
来源:互联网 发布:电影撞车影评 知乎 编辑:程序博客网 时间:2024/05/21 19:43
title:JAVA程序性能调优笔记(3)-有助于改善性能的技巧
tags: 有助于改善性能的技巧
grammar_cjkRuby: true
1.慎用异常
@Test public void testInForTryCatch() {//性能差 long starttime=System.currentTimeMillis(); int a=0; for(int i=0;i<100000000;i++){ try{ a++; }catch(Exception e){ } } long endtime=System.currentTimeMillis(); System.out.println("testInForTryCatch:"+(endtime-starttime)); } @Test public void testOutForTryCatch() {//性能好 long starttime=System.currentTimeMillis(); int a=0; try{ for(int i=0;i<100000000;i++){ a++; } }catch(Exception e){ } long endtime=System.currentTimeMillis(); System.out.println("testOutForTryCatch:"+(endtime-starttime)); }
2.使用局部变量
局部变量的访问速度远远高于类的成员变量
@Test public void testLocalVar() { long starttime=System.currentTimeMillis(); int a=0; for(int i=0;i<100000000;i++){ a++; } long endtime=System.currentTimeMillis(); System.out.println("testLocalVar:"+(endtime-starttime)); } @Test privat static int ta = 0; public void testMemberVar() { long starttime=System.currentTimeMillis(); for(int i=0;i<100000000;i++){ ta++; } long endtime=System.currentTimeMillis(); System.out.println("testMemberVar:"+(endtime-starttime)); }
3.位运算代替乘除法
老生常谈,能搞这个的人不多。
位运算的常见操作和题目
一种经典位运算的规则
4.替换switch(jdk1.7以上版本switch性能以纠正)
5.一维数组代替二维数组
如果将 array.length 提出来,特别是对二维数组则有很好的优化效果。
6.提取表达式
@Test public void testWeitiqu(){ double d=Math.random(); double a=Math.random(); double b=Math.random(); double e=Math.random(); double x,y; long starttime=System.currentTimeMillis(); for(int i=0;i<10000000;i++){ x=d*a*b/3*4*a; y=e*a*b/3*4*a;//重复应该抽象 } long endtime=System.currentTimeMillis(); System.out.println("testWeitiqu:"+(endtime-starttime)); } @Test public void testTiqu(){ double d=Math.random(); double a=Math.random(); double b=Math.random(); double e=Math.random(); double t,x,y; long starttime=System.currentTimeMillis(); for(int i=0;i<10000000;i++){ t=a*b/3*4*a; x=d*t; //抽象后 速度有很高提升 y=e*t; } long endtime=System.currentTimeMillis(); System.out.println("testTiqu:"+(endtime-starttime)); }
7.展开循环
顾名思义,通过方法减少循环次数,有效的降低时间。
8.布尔运算代替位运算
我们很少用位运算,所以了解一下即可。
9.使用arrayCopy()
@Test public void testArrayCopySystem(){ int size=100000; int[] array=new int[size]; int[] arraydst=new int[size]; for(int i=0;i<array.length;i++){ array[i]=i; } long starttime=System.currentTimeMillis(); for(int k=0;k<1000;k++) System.arraycopy(array, 0, arraydst, 0, size); long endtime=System.currentTimeMillis(); System.out.println("testArrayCopySystem:"+(endtime-starttime)+" last:"+arraydst[size-1]); }
10.使用clone()代替 new
使用在大对象上面,小对象用new足可以了。可以参考一下Java克隆技术
11.静态方法代替实例方法
静态方法明显快与实例方法。
0 0
- JAVA程序性能调优笔记(3)-有助于改善性能的技巧
- java程序优化之有助于改善性能的技巧
- 应用程序性能管理有助于改善SOA
- 使用WSASend改善网络程序的性能
- 改善J2EE程序性能的一些方法
- 改善J2EE程序性能的一些方法
- 使用WSASend改善网络程序的性能
- XWindow的程序性能及改善
- 提高Java程序性能的技巧
- JAVA程序性能调优读书笔记 (1)-Java技巧
- 改善Java中锁的性能
- 如何改善Java中锁的性能
- Java性能调优技巧
- Java性能调优技巧
- Java程序性能优化技巧
- Java程序性能优化技巧
- Java程序性能优化技巧
- Java程序性能优化技巧
- Netty学习之一--Java socket编程(单线程+多线程)
- Linux中用脚本实现批量添加和删除普通用户
- POJ3273 Monthly Expense
- MFC在Picture Control上存储图片(image)
- tomcat 如何配置https连接,两步搞定 Tomcat 下启用 https:// 访问
- JAVA程序性能调优笔记(3)-有助于改善性能的技巧
- bug小结
- 欢迎使用CSDN-markdown编辑器
- Mybatis Generator实现过程
- linux shell “(())” 双括号运算符使用
- 阿里面试回来,想和Java程序员谈一谈
- Toolbar实现完全自定义
- 进程之间的通信之隐式意图
- Problem A: 编写函数:三个数的最大最小值-1382