<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Change Dir

    先知cd——熱愛生活是一切藝術的開始

    統計

    留言簿(18)

    積分與排名

    “牛”們的博客

    各個公司技術

    我的鏈接

    淘寶技術

    閱讀排行榜

    評論排行榜

    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 */

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

    13public 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 下載:點擊這里。
    這里附加了文章中的測試代碼:點擊這里。

    posted on 2010-01-25 15:20 changedi 閱讀(2223) 評論(4)  編輯  收藏 所屬分類: Java技術

    評論

    # re: Rope與StringBuilder的簡單比較[未登錄] 2010-01-25 17:49 dennis

    Rope for java也是線程安全的,同步開銷少不了。你拿它跟StringBuilder比就不大合適。  回復  更多評論   

    # re: Rope與StringBuilder的簡單比較[未登錄] 2010-01-25 17:51 Jason

    Rope還是比不過StringBuilder,Rope是同步的,StringBuilder不是同步的,性能上,當然要差一點。  回復  更多評論   

    # re: Rope與StringBuilder的簡單比較[未登錄] 2010-01-25 18:19 changedi

    原來如此啊~~~~
    怪不得原文作者不比較呢~~~
    看來有必要認真研究一下了~~
      回復  更多評論   

    # re: Rope與StringBuilder的簡單比較 2010-01-27 23:47 leekiang

    為什么有StringBuilder不用卻要去用Rope,不累嗎  回復  更多評論   

    主站蜘蛛池模板: 国产在线国偷精品免费看| 亚洲视频日韩视频| 亚洲综合色丁香婷婷六月图片| 亚洲一区二区三区免费| 国产成人精品免费视频大全五级| 亚洲视频一区二区在线观看| 日本人成在线视频免费播放| 亚洲性久久久影院| a毛片成人免费全部播放| 国产一区二区免费在线| 亚洲成av人在线观看网站| 女性自慰aⅴ片高清免费| 亚洲av专区无码观看精品天堂| 亚洲第一网站免费视频| 亚洲成人福利在线观看| 曰批全过程免费视频在线观看| 亚洲伊人精品综合在合线| 久久久久久久91精品免费观看| 亚洲无人区码一二三码区别图片| 麻豆国产精品免费视频| 亚洲综合偷自成人网第页色| 在线免费一区二区| 无忧传媒视频免费观看入口| 在线精品亚洲一区二区小说| 国产真人无码作爱视频免费| 亚洲综合久久久久久中文字幕| 美女视频黄的全免费视频网站| 亚洲国产欧美日韩精品一区二区三区 | 亚洲精品无码专区久久久| 毛片在线全部免费观看| 亚洲欧洲国产成人精品| 日本免费一本天堂在线| 免费人成黄页在线观看日本| 亚洲娇小性xxxx| 国产国拍亚洲精品福利| 丁香花免费高清视频完整版| 一级A毛片免费观看久久精品 | 久久久久久国产精品免费免费男同| 亚洲欧洲日韩国产一区二区三区| 亚洲五月午夜免费在线视频| 91香蕉视频免费|