StringBuffer内容清空效率比较

在开发程序的时候,经常使用StringBuffer来进行字符串的拼接。如果在循环中来反复的做字符串拼接时,会清空Stringbuffer中的内容,然后再拼接新的字符串信息。

//有三种清空方式

StringBuffer buffer = new StringBuffer("我要被清空了 >_<");

buffer.setLength(0);

buffer = new StringBuffer();

buffer.delete(0, buffer.length());

System.nanoTime() 返回最准确的可用系统计时器的当前值,以毫微秒为单位。(毫微妙就是纳秒)

System.currentTimeMillis() 返回以毫秒为单位的当前时间。

 加入一段连接,说慎用currentTimeMillis() http://blog.sina.com.cn/s/blog_6b8bd9d80101fe8t.html  还是一脸懵逼

 

顺便记一下时间的换算关系

1秒=1000毫秒(ms)

1秒=1,000,000 微秒(μs)
1秒=1,000,000,000 纳秒(ns)

1秒=1,000,000,000,000 皮秒(ps)

后面还有飞秒 阿秒 等等一脸懵逼。。。。

从大到小都是1000倍的关系

晒一下测试代码

有的帖子说setLength(0)是效率最高的,结果测试出来还是有歧义的(只代表个人观点看法)

package test;

public class testStringBufferClear {

    
    public static void main(String[] args) {
        
        for (int i = 0; i < 30; i++) {
            
            method1();
            System.out.print("        ");
            method2();
            System.out.print("        ");
            method3();
            System.out.println();
        }
    }
    
    //setLength(0)方法
    private static void method1() {
        long s1, s2;
        StringBuffer buffer = new StringBuffer("我要被清空了 >_<");
        s1 = System.nanoTime();
        for (int i = 0; i < 5000000; i++) {
            buffer.setLength(0);
        }
        s2 = System.nanoTime();
        System.out.print((s2 - s1));
    }
    
    //new StringBuffer()方法
    private static void method2() {
        long s1,s2;
        StringBuffer buffer = new StringBuffer("我要被清空了 >_<");
        s1 = System.nanoTime();
        for (int i = 0; i < 5000000; i++) {
            buffer = new StringBuffer();
        }
        s2 = System.nanoTime();
        System.out.print((s2 - s1));
    }
    
    //delete(.....)方法
    private static void method3() {
        long s1,s2;
        StringBuffer buffer = new StringBuffer("我要被清空了 >_<");
        s1 = System.nanoTime();
        for (int i = 0; i < 500000; i++) {
            buffer.delete(0, buffer.length());
        }
        s2 = System.nanoTime();
        System.out.print((s2 - s1));
    }
}

 

测试的结果

77091109        62346975        16644471
70461894        61569434        17278737
63527655        58137005        13975624
63570761        58224858        12368405
62810873        29885249        13378306
69865806        74074545        12668912
62910221        51777917        12772365
65503119        32772496        12753481
63969795        31655449        12599122
64243207        50018391        12660702
62930748        117742471        12974756
63233307        29723501        12538775
63112201        31361510        13310979
67472014        29921375        12715301
64539608        30244051        12911123
66640694        29629489        13097093
67618162        48285961        12662344
63656152        29331446        12484585
63042411        30603674        12442300
63386023        29300246        12842977
63188970        28459483        12614722
62952916        29402467        12666449
62381871        28672137        12638122
64050669        29409857        12489511
63051853        31789692        13515832
64487472        29659869        13763381
65123790        44509919        12464058
63852384        28531736        12850776
64751441        32338978        12332279
63437340        28575663        12424648

 

 添加近千长度的字符串后

79280869        68364093        24834516
67602973        70277566        19302232
77915450        62548955        13769950
68215482        64663177        13432084
67390730        33378437        13133220
68378051        76681402        13868476
68034028        53389242        13410737
68214250        34754939        14827060
68084523        34071820        13526917
67219128        53689338        13256789
69229898        121597745        13803202
66715000        32174767        13761329
69370709        32394811        14568427
72390557        31248204        14572944
69659310        31044172        14237131
72759211        33524996        13303589
70227072        29709543        12510448
63689814        29024781        12532206
66542578        29140961        13048240
64335166        46217718        13011704
63995658        29432025        12494027
63803942        31202635        13344642
71394615        33262668        13850414
66684620        29084718        12909481
71696353        29069119        12879924
63870857        28831832        12396732
65090948        29830649        12624164
65497782        29249751        12982966
63846226        39771188        12686565
63665182        34394906        12874997

 

从上面的数据看出delete方法的效率还是蛮快的

posted @ 2016-08-09 17:24  戏子诺  阅读(423)  评论(0)    收藏  举报