今天测试了一下毕设,有些方法执行很慢。找了很长时间,不知道有什么调试的好办法,很快能定位哪个函数执行慢的方法?只是通过System.currentTimeMillis()一步一步逼近,哎!
终于找到了,String s=s+"XXX"的问题(以前别人写的代码)。
做了个小实验:
StringBuffer sb = new StringBuffer();
int i=0;
long b=System.currentTimeMillis();
while(i++<10000000)
sb.append('a').append("bcd").append('e');
long e=System.currentTimeMillis();
System.out.println(e-b);
i=0;
sb = new StringBuffer();
b=System.currentTimeMillis();
while(i++<10000000)
sb.append('a'+"bcd"+'e');
e=System.currentTimeMillis();
System.out.println(e-b);
结果为:2437ms和1453ms
StringBuffer sb = new StringBuffer();
int i=0;
long b=System.currentTimeMillis();
while(i++<5000000)
sb.append('a').append("bcd").append(i).append('e');
long e=System.currentTimeMillis();
System.out.println(e-b);
i=0;
sb = new StringBuffer();
b=System.currentTimeMillis();
while(i++<5000000)
sb.append('a'+"bcd"+i+'e');
e=System.currentTimeMillis();
System.out.println(e-b);
结果:2031ms和3047ms
总结:
在大循环中,
1、对于连接的字符串都为常量,直接用 sb.append('a'+"bcd"+'e');尽量减少append的次数。
2、对于连接的字符串大部分不同时,用 sb.append('a').append(i).append('e'); 比较快。
3、至于str+="aaa"或str=str+"aaa",大循环中直接死掉。
分享到:
相关推荐
StringBuffer解析
JAVA中String与StringBuffer的区别 JAVA中String与StringBuffer的区别 自己的学习笔记总结
String、StringBuilder和StringBuffer的区别 String、StringBuilder和StringBuffer的区别 String、StringBuilder和StringBuffer的区别
StringBuffer练习.doc
string和Stringbuffer使用方法浅谈
String ,StringBuffer与StringBuilder的区别
String,StringBuffer,StringBuilder区别。几乎所有的应用开发都离不开操作字符串,理解字符串的设计和实现以及相关 工具如拼接类的使用,对写出高质量代码是非常有帮助的
StringBuffer的常用方法实例,如:append、insert等等。其中,StringBuffer与String的区别详细做了例子。
String的效率低于StringBuffer,开发时最好选用StringBuffer。
String StringBuffer和StringBuilder 区别之源码解析 从源码角度简单对它们之间的区别进行了验证
StringBuffer:字符创变量 StringBuilder:字符创变量 从上面的名字可以看到,String是“字符创常量”,也就是不可改变的对象。对于这句话的理解你可能会产生这样一个疑问 ,比如这段代码:
string和StringBuffer的区别
方便人们把sql转化为StringBuffer拼接语句,也可以转为String拼接语句,jdk要在1.6以上,并且配置了JAVAHOME才能运行
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据.这个String类提供了数值不可改变的字符串.而这个StringBuffer类提供的字符串进行修改.当你知道字符数据要改变的时候...
StringBuffer的特点,Stringbuffer是字符串缓冲区: 是一个容器。
StringBuffer类的常用方法.md
详解string与stringbuffer的区别,详述了String 是不可变,以及他们的再字符串连接时的效率区别!
简单的介绍了String、StringBuffer和StringBuilder的区别
对于Java中StringBuffer类的有关问题做下的思维导图,便于深化记忆,希望对你有帮助!注意:文件为.mm后缀建议下载freemind打开,免费的思维导图软件!