| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 849 人关注过本帖
标题:String,StringBuffer,StringBuilder
只看楼主 加入收藏
qingsiyu
Rank: 1
来 自:大连
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-10-6
收藏
 问题点数:0 回复次数:3 
String,StringBuffer,StringBuilder
用String,StringBuffer,StringBuilder测试一下速度,发现在Netbeans,Jcreator里执行结果有一定的差异
StringBuffer应该是线程安全的,带有Sychronized的,而StringBuilder是以牺牲线程安全为代价的,在单线程情况下
应该会比StringBuffer来得快,在Netbeans得到了想要的结果.而在Jcreator里却是StringBuffer来得快一些..
这是为什么???
下附代码和结果:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package comparestrings;
//import java.util.*;
/**
 *
 * @author lynn
 */
public class CompareStrings {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
         String str = "abcdefghijklmnopqrstuvwxyz";
         StringBuffer strBuffer = new StringBuffer("abcdefghijklmnopqrstuvwxyz");
         StringBuilder strBuilder = new StringBuilder("abcdefghijklmnopqrstuvwxyz");
        long time1= System.currentTimeMillis() ;
        for(int i= 0 ;i<10000;i++)
            str = str+"abcdefghijklmnopqrstuvwxyz";
        long time2= System.currentTimeMillis() ;
        long t1 = time2 - time1;
        
        time1= System.currentTimeMillis() ;
        for(int i= 0 ;i<10000;i++)
            strBuffer.append("abcdefghijklmnopqrstuvwxyz");
        time2= System.currentTimeMillis() ;
        long t2 = time2 - time1;
        
        time1= System.currentTimeMillis() ;
        for(int i= 0 ;i<10000;i++)
            strBuilder.append("abcdefghijklmnopqrstuvwxyz");
        time2= System.currentTimeMillis() ;
        long t3 = time2 - time1;
         
        // System.out.println(str);
         System.out.println("use time: "+t1 +" \n\n**********************************");
         //System.out.println(strBuffer.toString());
         System.out.println("use time: "+t2 +" \n\n**********************************");
         //System.out.println(strBuilder.toString());
         System.out.println("use time: "+t3 );
    }

}
NetBeans运行结果:
run:
use time: 50953

**********************************
use time: 16

**********************************
use time: 0


Jcreator的运行结果:
搜索更多相关主题的帖子: String 
2008-10-06 11:49
大活宝
Rank: 1
来 自:河北唐山
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-5-25
收藏
得分:0 
MyEclipse 测试结果
use time: 73610

**********************************
use time: 0

**********************************
use time: 0

合乎逻辑的下定义,把事情简单化!
2008-10-06 13:03
大活宝
Rank: 1
来 自:河北唐山
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-5-25
收藏
得分:0 
额外测试
API:
例如,测试某些代码执行的时间长度:
   long startTime = System.nanoTime();
   // ... the code being measured ...
   long estimatedTime = System.nanoTime() - startTime;

 结果:
use time: 75743151993

**********************************
use time: 7904077

**********************************
use time: 6222020

合乎逻辑的下定义,把事情简单化!
2008-10-06 13:11
huwangvs
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:764
专家分:0
注 册:2007-2-4
收藏
得分:0 
nb更专业点,jc本身bug就比较多。
直接命令行应该是最准的。

测这种东西没什么用,java不是c,这种速度上的优化对web工程影响不大。
最大的影响还是数据库读取方面的。
2008-10-06 14:12
快速回复:String,StringBuffer,StringBuilder
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021510 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved