Java代码性能优化

目的

  • 减少代码的体积
  • 提过代码运行的效率

具体细节:


    1. 尽量指定类、方法的final修饰符
      带有final修饰符的类不可派生的.在Java核心API中就用Final.当指定一个类是final的,那么所有的方法都是final. * 此举能够使性能平均提高50% *
    1. 尽可能重用对象,尽可能不new
    1. 尽可能使用局部变量
    1. 及时关闭流
    1. 尽可能减少变量的重复计算
      如for (int i = 0; i < list.size(); i++)
      – 建议改成—–>
      for (int i = 0, int length = list.size(); i < length; i++)
    1. 尽量使用懒加载的策略,需要时候才创建
    1. 慎用异常
      异常对性能不利.抛出一个异常手续创建对象,Throwable接口的构造函数调用名为filllnStackTrace()的本地同步方法,finllStackTrace(方法检查堆栈,收集调用跟踪信息.只要有异常抛出,虚拟机就必须调整调用堆栈,因为在处理过程中创建了一个新的对象.异常只能用于错误处理,不应该用来控制程序流程.
    1. 不要在循环中使用try..catch..,写在最外层;
    1. 如果能估计到待添加的内容长度,为底层以数组方式实现的集合、工具类指定初始长度
      比如ArrayList、LinkedList、StringBuilder、StringBuffer、HashMa、HashSet等等.例如:
      ( 1 ) StringBuilder() //默认分配16字符
      (2)StringBuilder(int size)  // 默认分配size个字符的空间
      (3)StringBuilder(String str) // 默认分配16个字符+str.length()个字符空间
  • 10、当复制大量数据时,使用System.arraycopy()命令

  • 11、乘法和除法使用移位操作
    注:移位操作虽然快,但是可能会使代码不太好理解,因此最好加上相应的注释。
    -12、循环内不要不断创建对象引用
    例如:
    for (int i = 1; i <= count; i++)
    {Object obj = new Object();}
    这种做法会导致内存中有count份Object对象引用存在,count很大的话,就耗费内存了,建议为改为:
    Object obj = null;for (int i = 0; i <= count; i++) { obj = new Object(); }
  • 13、基于效率和类型检查的考虑,应该尽可能使用array,无法确定数组大小时才使用ArrayList
  • 14、尽量使用HashMap、ArrayList、StringBuilder,除非线程安全需要,否则不推荐使用Hashtable、Vector、StringBuffer,后三者由于使用同步机制而导致了性能开销

  • 15、不要将数组声明为public static final

  • 17、尽量避免随意使用静态变量
    public class A{ private static B b = new B();}

    • 18、使用同步代码块替代同步方法

    • 19、将常量声明为static final,并以大写命名
      这样在编译期间就可以把这些内容放入常量池中,避免运行期间计算生成常量的值。另外,将常量的名字以大写命名也可以方便区分出常量与变量

    • 20、不要创建一些不使用的对象,不要导入一些不使用的类

    • 21、程序运行过程中避免使用反射
    • 22、使用数据库连接池和线程池
    • 23、使用带缓冲的输入输出流进行IO操作
    • 24、不要让public方法中有太多的形参,使用对象传入
      public是对外提供的方法,太多的形参的话主要有两个坏处:
      1.违背面向对象的编程思想,Java讲求一切都是对象,太多的形参,和面向对象的编程不契合;
      2.参数太多势必导致方法调用的出错;

    -25、请知道,在java中if (i == 1)和if (1 == i)是没有区别的,但从阅读习惯上讲,建议使用前者

    -26. 、不要对超出范围的基本数据类型做向下强制转型

    -27. 使用最有效率的方式去遍历Map
    HashMap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值