Java代码级性能优化

优化代码的目标:
1、减小代码的体积
2、提高代码运行的效率
代码优化细节
1、尽量用指定类、方法的final修饰符
2、尽量重用对象(String尽量用StringBuffer或StringBuilder代替)
3、尽可能使用局部变量
4、计时关闭流
5、尽量减少对变量的重复计算(如:for循环里面判断条件尽量是定值而不是要每次计算的)
6、尽量使用懒加载策略,即在需要的时候再创建(不太理解)
7、慎用异常(减少消耗,异常只能用于错误处理不应用来控制程序流程)
8、不要在循环里使用try{}catch{},应该把它放在最外层
9、如果能估计到待添加内容的长度,为底层以数组的方式实现的集合、工具类指定初始长度
10、当复制大量数据时,使用system.arraycopy()命令
11、乘法和除法使用以为操作(*/处理性能比<<和>>高)
12、循环内不要不断创建对象引用
13、基于效率和类型检查的考虑,应该尽可能使用array,无法确定数组大小时才使用ArrayList
14、尽量使用HashMap、ArrayList、StringBuilder,除非线程安全需要,否则不推荐使用Hashtable、vector、StringBuffer后三者由于使用了同步机制而导致性能开销
15、不要将数组声明为public static final(这样声明毫无意义,声明后数组仍可改变,public更是漏洞)
16、尽量在合适的场合使用单例(单例适用于:a、控制资源的并发访问;b、控制实例的多次产生;c、实现数据共享,线程通讯)
17、尽量避免随意使用静态变量(静态变量一般不会被gc,会消耗内存)
18、计时清除不必要的会话
19、实现RandomAccess接口的集合比如ArrayList应当使用最普通的for循环而不是foreach循环来遍历(不明白)
20、使用同步代码块代替同步方法(避免不需要同步的代码也同步影响性能)
21、将常亮声明为static final,并以大写命名
22、不要创建一些不适用的对象,不要导入一些不使用的类
23、程序运行过程中避免使用反射(反射很消耗资源,特别是invoke方法,无法避免时最好在程序启动时执行放射)
24、使用数据库连接池和线程池(前者避免链接频繁的打开和关闭,后者避免链接频繁的创建和销毁)
25、使用带缓冲的输入输出流进行IO操作(BufferReader 、BufferWriter、BufferInputstream、BufferOutputstream)
26、顺序插入和随机访问比较多的场景使用ArrayList,元素删除和中间插入比较多的场景使用LinkedList
27、不要让public修饰的方法有太多的形参(保证面向对象的编程思想、避免出错)
28、字符串变量和字符串常量equels时字符串常量放在前面
29、请知道,在Java中if(i==1)和if(1==i)是没有区别的,但阅读习惯使用前者
30、不要对数组使用toString方法(该方法只能打印数组的引用,集合的toString可以打印内容的)
31、不要对超出范围的基本数据类型进行向下强制转型
32、公用的集合类中不是用的数据一定要及时remove掉
33、把一个基本数据类型转换为字符串,基本数据类型的toString是最快方式,String.valueOf(数据)次之,数据+“”最慢
34、使用最有效的方式遍历Map
35、对资源的close建议分开来操作
36、对于ThreadLocal使用前或使用后一定要先remove(避免线程重用)
37、切记以常量定义的方式替代魔鬼数字,魔鬼数字的存在将极大的降低代码可读性,字符串讲极大地降低代码可读性,字符串常量是否使用常量定义可以视情况而定
38、long或者Long初始赋值时,使用大写的L而不是小写的l,因为l容易与1混淆
39、所有重写的方法必须保留@Override注解
40、推荐使用jdk7中新引入的Object工具类来进行对象的equals比较,直接a.equals(b),有空指针风险
41、循环内不要使用“+”进行字符串拼接,而使用StringBuffer不断append(+其实底层还是要去不断地new StringBuffer再append)
42、不捕获Java类库中定义的继承自RunTimeException的运行时异常类
43、避免Random实例被多线程使用,虽然共享该实例是线程安全的,但会因竞争同一seed导致的性能下降,jdk7之后,可以使用ThreadLocalRandom来获取随机数
44、静态类、单例类、工厂类将他们的构造函数置为private
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值