仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3224|回复: 20
打印 上一主题 下一主题

[学习教程] 了解下JAVA的Java功能优化[2]:字符串过滤实战

[复制链接]
透明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:32:15 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Java编译的是字节码,跟C++相反,启动不够快,效率不够高,难以精确控制内存,但是优点是编程比C++容易,代码比较安全但是容易留下性能隐患,跨平台靠字节码在各个平台复制(一处编译到处调试)
上一个帖子已先容了基础范例和援用范例的功能差别(次要是因为内存分派体例分歧招致)。为了给各位看官加深印象,明天拿一个详细的例子来实地操纵一把,看看优化的效果怎样。
★关于需求
起首形貌一下需求,详细以下:给定一个String对象,过滤失落除数字(字符0-9)之外的别的字符。请求工夫开支尽量小。过滤函数的原型以下:Stringfilter(Stringstr);
针对上述需求,我写了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情况是JDK1.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倍。
<p>
由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,
透明 该用户已被删除
沙发
 楼主| 发表于 2015-2-5 13:36:22 | 显示全部楼层
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-5 19:37

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表