`

字符串拼接汇总(性能对比)

    博客分类:
  • java
阅读更多

在开发过程中,经常会和字符串打交道, 其中字符串拼接的工作必不可少,

最常用的有

  • +

  • string concat

  • String.join (since jdk8)

  • StringBuffer append

  • StringBuilder append

我们来看看性能情况

1. 实现

public class StringAppendTest extends AbstractPerformanceTest{

    private static final int LOOP_COUNT = 100_0000;

    //---------------------------------------------------------------

    @Override
    protected String[] buildFieldArray(){
        return toArray("+", "String concat", "String.join", "StringBuffer.append", "StringBuilder.append");
    }

    //---------------------------------------------------------------

    @Override
    protected ProcessCallback buildMutiCallback(){
        return new ProcessCallback(){

            @Override
            public void processResult(String field){
                switch (field) {
                    case "+":
                        String a = "a";
                        for (int i = 0; i < LOOP_COUNT; i++){
                            a += "b";
                        }
                        break;

                    case "String concat":
                        String c = "c";
                        for (int i = 0; i < LOOP_COUNT; i++){
                            c = c.concat("d");
                        }
                        break;

                    //since 20180207
                    case "String.join":
                        String j = "j";
                        for (int i = 0; i < LOOP_COUNT; i++){
                            j = String.join(j, "j");
                        }
                        break;

                    case "StringBuffer.append":
                        StringBuffer e = new StringBuffer("e");
                        for (int i = 0; i < LOOP_COUNT; i++){
                            e.append("d");
                        }
                        break;

                    case "StringBuilder.append":
                        StringBuilder d = new StringBuilder("e");
                        for (int i = 0; i < LOOP_COUNT; i++){
                            d.append("d");
                        }
                        break;

                    default:
                        break;
                }
            }
        };
    }

}

2. 性能对比

35917725 195c16ca 0c4a 11e8 813e c381330befa6

上图是 循环 100,0000 统计出来的数据

在性能上 ++ 是最差的

StringBuilder 最快

测试硬件概览:

型号名称:	MacBook Pro
处理器名称:	Intel Core i5
处理器速度:	2.9 GHz
内存:	16 GB
1
1
分享到:
评论
2 楼 飞天奔月 2018-02-07  
加上了 jdk8  String.join

性能不错
1 楼 fanlei77 2018-02-07  
JDK8的String.join可以加一下一起比较

相关推荐

Global site tag (gtag.js) - Google Analytics