Rope与StringBuilder的简单比较

Rope与StringBuilder的简单比较

最近看了这篇文章 http://www.ibm.com/developerworks/cn/java/j-ropes/?S_TACT=105AGX52&S_CMP=techcsdn

作者比较了String和StringBuffer与Rope结构的常用操作速度。并以实验证明了Rope的性能。我在自己的机器上实验,同样也证明了Rope的高效,但是作者没有用StringBuilder和Rope做比较,所以我们不妨一试。
暂时的实验结果表明,就append和delete操作而言,StringBuilder胜过Rope,那么Rope的真正优势在哪里呢?时间仓促,没有深入研究,特此立一文,以后细看其结构~~~

我的测试代码如下:

 1 /** */ /**
 2 * 
 3 */

 4 import  java.io. * ;
 5 import  java.util. * ;
 6
 7 import  org.ahmadsoft.ropes. * ;
 8
 9 /** */ /**
10 * @author Jia Yu
11 * @date 2010-1-25
12 */

13 public   class  Test2  {
14
15    /** *//**
16     * @param args
17     */

18    public static void main(String[] args) {
19        // TODO Auto-generated method stub
20
21        int max = 100000;
22        String eq = "";
23        Rope r = Rope.BUILDER.build("");
24        StringBuffer sb = new StringBuffer("");
25        StringBuilder sb2 = new StringBuilder("");
26
27        double st = System.nanoTime();
28        for (int i = 0; i < max; i++{
29            eq += "h";
30        }

31        double ed = System.nanoTime();
32        System.out.println(ed - st);
33
34        st = System.nanoTime();
35        for (int i = 0; i < max; i++{
36            sb.append("h");
37            // sb.deleteCharAt(0);
38        }

39        ed = System.nanoTime();
40        System.out.println((double) ed - (double) st);
41
42        st = System.nanoTime();
43        for (int i = 0; i < max; i++{
44            sb2.append("h");
45            // sb2.deleteCharAt(0);
46        }

47        ed = System.nanoTime();
48        System.out.println((double) ed - (double) st);
49
50        st = System.nanoTime();
51        for (int i = 0; i < max; i++{
52            r.append("h");
53        }

54        ed = System.nanoTime();
55        System.out.println((double) ed - (double) st);
56    }

57}

58


结果如下:
1.6120785922E10
1.0273193E7
2647639.0
9781992.0
只从数量级比较的话,String的低效就不说了,毕竟基于Char[]实现的,而StringBuffer比StringBuilder慢也可以理解,毕竟加入了同步的考虑,也算是为线程安全付出的代价,但是所谓的树型机制的Rope还是比不过StringBuilder啊~~~

Rope for Java 下载:点击这里。
这里附加了文章中的测试代码:点击这里。



你可能感兴趣的:(Rope与StringBuilder的简单比较)