zoukankan      html  css  js  c++  java
  • JAVA性能优化

    10种简单的Java性能优化:

    1、使用StringBuilder

    2、避免使用正则表达式

    使用正则表达式的话,至少要将 Pattern 缓存下来,避免反复编译Pattern。

    static final Pattern HEAVY_REGEX =

        Pattern.compile("(((X)*Y)*Z)*");

    3、不要使用iterator()方法

    4、不要调用高开销方法

    5、使用原始类型和栈

    //存储在堆上

    Integer i = 817598;

    // 存储在栈上

    int i = 817598;

    6、避免递归

    7、使用entrySet()迭代map

    8、使用EnumSet或EnumMap

            使用配置map时,我们可能会预先知道保存在map中键值。如果这个键值非常小,我们就应该考虑使用 EnumSet 或 EnumMap

    9、优化自定义hasCode()方法和equals()方法

    10、考虑使用set而并非单个元素

    11、不要在循环中使用try…catch…,应该把其放在最外层,在执行中抛出异常会继续循环。/

    12、循环内不要不断创建对象引用,/

    Object obj = null;for (int i = 0; i <= count; i++) { obj = new Object(); }

    13、尽量避免随意使用静态变量,gc通常是不会回收这个对象所占有的堆内存

    14、将常量声明为static final,并以大写命名

    15、字符串变量和字符串常量equals的时候将字符串常量写在前面,变量写在前面,null写在后面。

    16、把一个基本数据类型转为字符串,基本数据类型.toString()是最快的方式、String.valueOf(数据)次之、数据+”"最慢

    17、 集合必须指定模板类型(5.0+)。说明:方便程序阅读,省去强制转换代码

    18、  异常捕获尽量不要直接catch (Exception ex),应该把异常细分处理。说明:可以设计更合理异常处理分支,排错。

    19、多提取公共方法,不要重复做一件事。

    1
    2
    3
    4
    5
    6
    7
    int loopTime = 50000;
    Integer i = 0;
    long startTime = System.currentTimeMillis();
    for (int j = 0; j < loopTime; j++){
    String str = String.valueOf(i);
    }
    System.out.println("String.valueOf():" + (System.currentTimeMillis() - startTime) + "ms");

    10种简单的Java性能优化:

    1、使用StringBuilder

    2、避免使用正则表达式

    使用正则表达式的话,至少要将 Pattern 缓存下来,避免反复编译Pattern。

    static final Pattern HEAVY_REGEX =

        Pattern.compile("(((X)*Y)*Z)*");

    3、不要使用iterator()方法

    4、不要调用高开销方法

    5、使用原始类型和栈

    //存储在堆上

    Integer i = 817598;

    // 存储在栈上

    int i = 817598;

    6、避免递归

    7、使用entrySet()迭代map

    8、使用EnumSet或EnumMap

            使用配置map时,我们可能会预先知道保存在map中键值。如果这个键值非常小,我们就应该考虑使用 EnumSet 或 EnumMap

    9、优化自定义hasCode()方法和equals()方法

    10、考虑使用set而并非单个元素

    11、不要在循环中使用try…catch…,应该把其放在最外层,在执行中抛出异常会继续循环。/

    12、循环内不要不断创建对象引用,/

    Object obj = null;for (int i = 0; i <= count; i++) { obj = new Object(); }

    13、尽量避免随意使用静态变量,gc通常是不会回收这个对象所占有的堆内存

    14、将常量声明为static final,并以大写命名

    15、字符串变量和字符串常量equals的时候将字符串常量写在前面,变量写在前面,null写在后面。

    16、把一个基本数据类型转为字符串,基本数据类型.toString()是最快的方式、String.valueOf(数据)次之、数据+”"最慢

    17、 集合必须指定模板类型(5.0+)。说明:方便程序阅读,省去强制转换代码

    18、  异常捕获尽量不要直接catch (Exception ex),应该把异常细分处理。说明:可以设计更合理异常处理分支,排错。

    19、多提取公共方法,不要重复做一件事。

    1
    2
    3
    4
    5
    6
    7
    int loopTime = 50000;
    Integer i = 0;
    long startTime = System.currentTimeMillis();
    for (int j = 0; j < loopTime; j++){
    String str = String.valueOf(i);
    }
    System.out.println("String.valueOf():" + (System.currentTimeMillis() - startTime) + "ms");

      

  • 相关阅读:
    base.View.OpenParameter.CreateFrom打开历史单据的值是default
    创建日期时间大于启动日期时间
    下拉列表不显示空白选项的原因
    复制、下推、选单时计算类的实体服务规则不会执行
    选单返回数据以后会执行的事件方法
    判断单据体是否录入行
    供应商协同平台
    .net core获取运行时文件绝对路径
    gmock函数参数输出 备忘录
    リバース 終章
  • 原文地址:https://www.cnblogs.com/shuchen007/p/9173120.html
Copyright © 2011-2022 走看看