Java程序性能优化(一)

本文提供了几个Java性能优化的实用建议,包括合理设置StringBuffer的初始容量以减少内存分配开销,优先使用局部变量以提高访问速度,避免频繁使用取反操作符(!)以增强代码可读性,以及在类型检查时优选接口而非具体类以提升运行效率。

======================================================
注:本文源代码点此下载
======================================================

二十、确定 stringbuffer的容量

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

例子:

1 public class rsbc {

2void method () {

3stringbuffer buffer = new stringbuffer(); // violation

4buffer.append ("hello");

5}

6 }

更正:

为stringbuffer提供初始大小。

1 public class rsbc {

2void method () {

3stringbuffer buffer = new stringbuffer(max);

4buffer.append ("hello");

5}

6private final int max = 100;

7 }

二十一、尽可能的使用栈变量

如果一个变量需要经常访问,那么你就需要考虑这个变量的作用域了。static? local?还是实例变量?访问静态变量和实例变量将会比访问局部变量多耗费2-3个时钟周期。

例子:

1 public class usv {

2void getsum (int[] values) {

3for (int i=0; i4_sum += value[i];// violation.

5}

6}

7void getsum2 (int[] values) {

8for (int i=0; i9_staticsum += value[i];

10}

11}

12private int _sum;

13private static int _staticsum;

14 }

更正:

如果可能,请使用局部变量作为你经常访问的变量。

你可以按下面的方法来修改getsum()方法:

1 void getsum (int[] values) {

2int sum = _sum;// temporary local variable.

3for (int i=0; i 4sum += value[i];

5}

6_sum = sum;

7 }

二十二、不要总是使用取反操作符(!)

取反操作符(!)降低程序的可读性,所以不要总是使用。

例子:

1 public class dun {

2boolean method (boolean a, boolean b) {

3if (!a)

4return !a;

5else

6return !b;

7}

8 }

更正:

如果可能不要使用取反操作符(!)

二十三、与一个接口 进行instanceof操作

基于接口的设计通常是件好事,因为它允许有不同的实现,而又保持灵活。只要可能,对一个对象进行instanceof操作,以判断它是否某一接口要比是否某一个类要快。

例子:

1 public class insof {

2private void method (object o) {

3if (o instanceof interfacebase) { }// better

4if (o instanceof classbase) { }// worse.

5}

6 }

7

8 class classbase {}

9 interface interfacebase {}


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值