zoukankan      html  css  js  c++  java
  • Java编程中提高性能的几点建议

    尽量减少对变量的重复计算

    for(int i=0;i<list.size();i++)

    应该改为

    for(int i=0,len=list.size();i<len;i++)

    并且在循环中应该避免使用复杂的表达式,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快。

    尽量使用移位来代替'a/b'的操作

    "/"是一个代价很高的操作,使用移位的操作将会更快和更有效

    int num = a / 4;

    int num = a / 8;

    应该改为

    int num = a >> 2;

    int num = a >> 3;

    但注意的是使用移位应添加注释,因为移位操作不直观,比较难理解

    尽量使用移位来代替'a*b'的操作

    同样的,对于'*'操作,使用移位的操作将会更快和更有效

    int num = a * 4;

    int num = a * 8;

    应该改为

    int num = a << 2;

    int num = a << 3;

    尽量确定StringBuffer的容量

    StringBuffer 的构造器会创建一个默认大小(通常是16)的字符数组。在使用中,如果超出这个大小,就会重新分配内存,创建一个更大的数组,并将原先的数组复制过来,再 丢弃旧的数组。在大多数情况下,你可以在创建 StringBuffer的时候指定大小,这样就避免了在容量不够的时候自动增长,以提高性能。

    如:StringBuffer buffer = new StringBuffer(1000); 

    尽量早释放无用对象的引用

    大部分时,方法局部引用变量所引用的对象 会随着方法结束而变成垃圾,因此,大部分时候程序无需将局部,引用变量显式设为null。

    例如:

    1. Public void test(){ 
    2. Object obj = new Object(); 
    3. ……  
    4. Obj=null; 
    5. }  

    上面这个就没必要了,随着方法test()的执行完成,程序中obj引用变量的作用域就结束了。但是如果是改成下面:

    1. Public void test(){ 
    2. Object obj = new Object(); 
    3. ……  
    4. Obj=null; 
    5. //执行耗时,耗内存操作;或调用耗时,耗内存的方法 
    6. ……  
    7. }  

    这时候就有必要将obj赋值为null,可以尽早的释放对Object对象的引用。

    尽量避免使用二维数组

    二维数据占用的内存空间比一维数组多得多,大概10倍以上。

  • 相关阅读:
    AxureRP的学习
    http状态码的含义
    10.mongoDB给所有文档添加字段
    ip正则匹配
    express使用socketIO,前后端跨域
    express后端配置,实现跨域
    https带来的express后台部署到服务器所引发的问题
    前台:VueSocketIOExt+socket.io-client,后台socket.io的聊天环境搭载
    即时通讯框架SocketIO
    9.mongoDB新增文档,若文档已存在,则不新增,若文档不存在,则新增
  • 原文地址:https://www.cnblogs.com/vonk/p/3823010.html
Copyright © 2011-2022 走看看