J2EE性能优化(一)

  用java进行开发,尤其是一些大型企业项目,性能调优的工作很重要。在设计应用程序的时候,应该始终把性能放在考虑范围内。一些应用程序设计中的不当做法,在小数据量,执行次数少的情况下,可能对性能造成的影响并不明显。但是在大数据量、大量重复执行的生产环境中,对性能却会造成明显的负面影响。


(一)String操作


  用StringBuffer.append来代替String+=累加;如下边的这段代码:


<span style="font-family:SimSun;font-size:18px;">String result = "";
for (int i = 0; i < 20; i++) {
result += getNextString();
}</span>


  javac 会将其编译成类似下面的代码:

<span style="font-family:SimSun;font-size:18px;">String result = "";
for (int i=0; i < 20; i++) {
result = new StringBuffer().append(result)
.append(getNextString())
.toString();
}</span>
<span style="font-family:SimSun;font-size:18px;">  从上面的代码可以看到,每次循环都会创建两个对象,一个是 StringBuffer,一个
是 toString 产生的 String 对象。如果循环次数或数据量很大的时候,这种做法对性能
的影响很明显。应该改成下面的做法:</span>
<span style="font-family:SimSun;font-size:18px;">
</span>
<span style="font-family:SimSun;font-size:18px;">String result = "";
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < 20; i++) {
buffer.append(getNextString());
}
result = buffer.toString();</span>

(二)日期操作


  我们应该使用如下代码来实现日期输出格式的国际化:

<span style="font-family:SimSun;font-size:18px;">Date dateTest=new Date();
//用来显示某一个时间的中文格式
SimpleDateFormat df = new SimpleDateFormat("yyyy 年 MM 月 dd 日");
String timevalue = df.format(dateTest);
// 用来显示某一个时间的其它国家格式
DateFormat fmt=DateFormat.getDateInstance(DateFormat.MEDIUM,
new Locale("en","US"));
String newprintformat1 = fmt.format(dateTest);</span>


  而不是用这样的代码,如:

<span style="font-family:SimSun;font-size:18px;">//  不要使用如下代码.
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String timevalue = df.format(data);
String year_num = timevalue.substring(0, 4);
String month_num = timevalue.substring(5, 7);
String day_num = timevalue.substring(8, 10);
String newprintformat = year_num + " 年"
+ month_num + " 月"
+ day_num + " 日";</span>

(三)异常


  慎用异常,异常抛出对性能不利。抛出异常首先要创建一个新的对象。Throwable 接口的构造函数调用名为 fillInStackTrace()的本地(Native)方法,fillInStackTrace()方法检查堆栈,收集调用跟踪信息。只要有异常被抛出,VM 就必须调整调用堆栈,因为在处理过程中创建了一个新的对象。而且,千万不要在finally中抛出异常,否则会湮没之前的异常, 给代码的debug造成很大困难。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值