码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA性能优化

时间:2018-06-12 16:25:07      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:mem   表达式   containe   类型   count   静态变量   map   regex   tor   

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");

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

JAVA性能优化

标签:mem   表达式   containe   类型   count   静态变量   map   regex   tor   

原文地址:https://www.cnblogs.com/shuchen007/p/9173120.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!