当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:16:00  来源:本站整理

Java性能优化[2]:字符串过滤实战[Java编程]

赞助商链接



  本文“Java性能优化[2]:字符串过滤实战[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

上一个帖子已经介绍了基本范例和引用范例的性能差别(主如果由于内存分配方法差别招致).为了给各位看官加深印象,本日拿一个具体的例子来实地操作一把,看看优化的效果若何.

★关于需求

首先描写一下需求,具体以下:给定一个String对象,过滤掉除数字(字符'0'- '9')以外的别的字符.要求时间开销尽大概小.过滤函数的原型以下:String filter(String str);

针对上述需求,我写了5个差别的过滤函数.为了论述便利,辨别称为filter1到filter5. 此中filter1性能最差、filter5性能最好.在你接着看后续的内容之前,你先暗自考虑一下,假如由你 来实现该函数,大约会写成什么样?最好把你想好的函数写下来,便于背面的比较.

★代码实现

◇测试代码

为了便利测试性能,先预备好一个测试代码,具体以下:

class Test
{
public static void main(String[] args)
{
if(args.length != 1)
{
return;
}

String str =  "";
long nBegin = System.currentTimeMillis();
for(int i=0;  i<1024*1024; i++)
{
str = filterN(args[0]); //此处调用某个具体的过滤函数
}
long nEnd = System.currentTimeMillis();
System.out.println(nEnd- nBegin);
System.out.println(str);
}
};

在没有想好你的实现方法之 前,先别偷看后续内容哦!别的,先注明下,我利用的Java环境是JDK 1.5.0-09,利用的测试字符串为 “D186783E36B721651E8AF96AB1C4000B”.由于机械性能不尽相同,你在自己机械上测试的 后果大概和我下面给出的数值不太一样,但趋向应当是差不多的.

◇版本1

先来发表性能 最差的filter1,代码以下:

private static String filter1(String strOld)
{
String strNew = new String();
for(int i=0; i<strOld.length(); i++)
{
if('0'<=strOld.charAt(i) && strOld.charAt(i) <='9')
{
strNew += strOld.charAt(i);
}
}
return  strNew;
}

假如你的代码不幸和filter1近似,那你的Java功底可就是相当糟糕了, 连字符串拼接需求用StringBuffer来优化都没搞懂得.

为了和后续比较,先记下filter1的处理 时间,大约在8.81-8.90秒之间.

◇版本2

再来看看filter2,代码以下:

private static String filter2(String strOld)
{
StringBuffer  strNew = new StringBuffer();
for(int i=0; i<strOld.length(); i++)
{
if('0'<=strOld.charAt(i) && strOld.charAt(i)<='9')
{
strNew.append(strOld.charAt(i));
}
}
return strNew.toString();
}

其实方才在评价filter1的时刻,已经泄露了filter2的天机.filter2通过利用 StringBuffer来优化衔接字符串的性能.为什么StringBuffer衔接字符串的性能比String好,这个已经 是老生常谈,我就不细说了.尚不清楚的同学自己上Google一查便知.我预计应当有挺多同学会写出类 似filter2的代码.

filter2的处理时间大约为2.14-2.18秒,晋升了大约4倍.


  以上是“Java性能优化[2]:字符串过滤实战[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .