Java中String.format,StringBuilder,加号拼接字符串效率

 

    @Test
    public void testFormat(){
        Integer loop = 1000000;
        Integer timeScale = 1000*1000;
        long time = System.nanoTime();
        for(int i=0;i<loop;i++){
            String s = "hello "+ i +"word";
            int size = s.length();
        }
        time = System.nanoTime() - time;
        System.out.println("加号拼接:  "+time+"ns"+"\t"+time/timeScale+"ms");

        time = System.nanoTime();
        for(int i=0;i<loop;i++){
            StringBuilder s = new StringBuilder();
            s.append("hello ").append(i).append("word");
            int size = s.length();
        }
        time = System.nanoTime() - time;
        System.out.println("使用Builer:"+time+"ns"+"\t"+time/timeScale+"ms");

        time = System.nanoTime();
        for(int i=0;i<loop;i++){
            String s = String.format("%s %d %s","hello",i,"word");
            int size = s.length();
        }
        time = System.nanoTime() - time;
        System.out.println("使用format:"+time+"ns"+"\t"+time/timeScale+"ms");
    }

输出结果:

#10000
加号拼接:  5066970ns	   5ms
使用Builer:4961695ns	   4ms
使用format:94398046ns	94ms


#100000
加号拼接:  32604006ns	32ms
使用Builer:11622116ns	11ms
使用format:401532390ns	401ms

#1000000
加号拼接:  86900437ns	86ms
使用Builer:51769362ns	51ms
使用format:2209215837ns	2209ms

可以看到加号和StringBuiler性能差不多,format方式性能差了两个数量级

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值