看看以下代碼:
將26個(gè)英文字母重復(fù)加了5000次,
String tempstr = "abcdefghijklmnopqrstuvwxyz";
int times = 5000;
long lstart1=System.currentTimeMillis();
??String str ="";
??for(int i=0;i<times;i++)
??{
???str+=tempstr;
??}
??
??long lend1=System.currentTimeMillis();
??long time = (lend1-lstart1);
??System.out.println(time);
可惜我的計(jì)算機(jī)不是超級(jí)計(jì)算機(jī),得到的結(jié)果每次不一定一樣一般為 154735 左右。
也就是154秒。
我們?cè)倏纯匆韵麓a
String tempstr = "abcdefghijklmnopqrstuvwxyz";
?
??int times = 5000;
long lstart2=System.currentTimeMillis();
??StringBuffer sb =new? StringBuffer();
??for(int i=0;i<times;i++)
??{
???sb.append(tempstr);
???
??}
??long lend2=System.currentTimeMillis();
??long time2 = (lend2-lstart2);
??System.out.println(time2);
?得到的結(jié)果為 16 有時(shí)還是 0
所以結(jié)論很明顯,StringBuffer 的速度幾乎是String 上萬倍。當(dāng)然這個(gè)數(shù)據(jù)不是很準(zhǔn)確。因?yàn)檠h(huán)的次數(shù)在100000次的時(shí)候,差異更大。不信你試試。
下一次我將解釋為什么StringBuffer 的效率比String 高這么多。
posted on 2007-01-14 12:24
nake 閱讀(4220)
評(píng)論(4) 編輯 收藏