[java,2017-05-16] java中清空StringBuffer的方法以及耗费时间比较

时间:2021-10-06 23:12:33
[java,2017-05-16] java中清空StringBuffer的方法以及耗费时间比较

java中清空StringBuffer的方法,我能想到的有4种:

1. buffer.setLength(0);  设置长度为0

2. buffer.delete(0, buffer.length());  删除0到末尾

3. buffer.replace(0, buffer.length(), "");  替换所有内容为空字符串

4. buffer=new StringBuffer();   创建新的StringBuffer

那么这4种方法哪种消耗的时间最少呢?

我对上面4种方法分别进行了百万次的循环,代码如下:

 public class StringBufferTest {
public static void main(String[] args) {
StringBuffer buffer=new StringBuffer();
Long time1=System.currentTimeMillis();
for(int i=1;i<1000000;i++){
buffer.append("hello,world"+i);
buffer.setLength(0);
}
Long time2=System.currentTimeMillis();
System.out.println("setLength cost==="+(time2-time1)); Long time3=System.currentTimeMillis();
for(int i=1;i<1000000;i++){
buffer.append("hello,world"+i);
buffer.delete(0, buffer.length());
}
Long time4=System.currentTimeMillis();
System.out.println("delete cost==="+(time4-time3)); Long time5=System.currentTimeMillis();
for(int i=1;i<1000000;i++){
buffer.append("hello,world"+i);
buffer.replace(0, buffer.length(), "");
}
Long time6=System.currentTimeMillis();
System.out.println("replace cost==="+(time6-time5)); Long time7=System.currentTimeMillis();
for(int i=1;i<1000000;i++){
buffer.append("hello,world"+i);
buffer=new StringBuffer();
}
Long time8=System.currentTimeMillis();
System.out.println("new cost==="+(time8-time7));
}
}

得到了如下结果,为了排除偶然性,进行了5次测试:

[java,2017-05-16] java中清空StringBuffer的方法以及耗费时间比较    [java,2017-05-16] java中清空StringBuffer的方法以及耗费时间比较

[java,2017-05-16] java中清空StringBuffer的方法以及耗费时间比较        [java,2017-05-16] java中清空StringBuffer的方法以及耗费时间比较   [java,2017-05-16] java中清空StringBuffer的方法以及耗费时间比较

通过上面的结果我们可以看出:

最耗费时间的是创建对象的方法(new StringBuffer()),其次是设置长度的方法(setLength(0));

最节省时间的是删除的方法(delete(0, buffer.length())),其次是替换的方法(replace(0, buffer.length(), ""))。