代码优化

论坛 期权论坛 期权     
锋道知了   2019-6-16 18:44   2139   0
常用的技术优化手段1 尽量用final关键字,再类和方法上,因为java编译器会内联所有的final方法,可以提高50%的效率2 尽量重用对象,出现字符串连接多用StringBuffer和StringBuilder。String不存在容量一说,默认为16,你定义多少就是多少。String的底层的subString()在源码里如果你传入的是0,返回的是自身,否则创建一个新的String对象。String的绝大部分都是生成一个新的对象,所以这是为什么String不太好在字符串上面的操作。StringBuilder内部是可变数组,是存在容量可变,默认为16,append()方法,如果添加为空,也可以添加上去的,是将null变成字符串拼接上去,去过不是空就要判断容量是否需要扩容。append方法的关键getChars()方法字符串复制到目标数组的实现就是System.arrayCopy()方法。StringBuilder的toString()就是new一个新的String,把StringBuilder的Value复制过来。StringBuffer()线程安全,在很多方法上都加了同步锁,实现线程安全。ToString方法StringBuffer()的方法比StringBuilder多了一个toStringCatch缓存,呢出来的String对象是共享这个存储的,StringBuffer稍微修改就会把这值设置为null,这两个的区别3 尽可能使用局部变量,一些静态方法,实例方法都在堆中创建,但是这些局部变量就会在栈中创建,随着方法执行结束也会被回收。4 及时的关闭流,占了很多内存不及时处理就会造成严重的后果。5 尽量减少计算。不断地创建对象。都会消耗在栈上的资源。6 尽量使用懒加载,需要时候创建。7 慎用异常,不要在异常中做处理。8 更不能再循环中用到异常9 能估计添加内容的长度,就提前指定好容量10 当复制大量内容时候,用System.ArrayCopy()11 乘法除法操作尽量使用移位运算。12 循环内不要不断地创建对象引用。13 基于效率和类型检查时候多用尽可能使用array ,不确定数量使用arraylist14 尽量使用HashMap、ArrayList、StringBuilder,除非线程安全需要,否则不推荐使用Hashtable、Vector、StringBuffer,后三者由于使用同步机制而导致了性能开销15 尽量在合适的场合使用单例16 不要随便使用这个static 因为gc通常不会回收。17 及时清除不再需要的会话及时调用HttpSession的invalidate()方法清除会话。18 将常量声明为static final,并以大写命名,都直接放到常量池中。使用不需要在创建。19 不要创建一些不使用的对象,不要导入一些不使用的类20 使用数据库连接池和线程池,避免重复创建。21 使用带缓冲的输入输出流进行IO操作,带缓冲的输入输出流,即BufferedReader、BufferedWriter、BufferedInputStream、BufferedOutputStream,这可以极大地提升IO效率22 顺序插入和随机访问比较多的场景使用ArrayList,元素删除和中间插入比较多的场景使用LinkedList23 不要对数组使用toString()方法,打印出来的是地址。24 公用的集合类中不使用的数据一定要及时remove掉。25 把一个基本数据类型转为字符串,基本数据类型.toString()是最快的方式、String.valueOf(数据)次之、数据+””最慢26 使用最有效率的方式去遍历Map遍历Map的方式有很多,通常场景下我们需要的是遍历Map中的Key和Value
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP