String拼接与StringBuilder性能比较

作者: hexter | 来源:发表于2016-10-02 15:43 被阅读512次

    都说如果有频繁的String拼接(String=str+str)时,换用StringBuilder会比较好。

    具体也没比较过性能有多少差别。

    这次做了个实验看看效果差别多大。

    硬件环境是:华为A9,比较老。

    具体代码如下:

    一个2维int矩阵,用这些数据来拼接字符串

    private int rowlength = 20;

    private int length = 300;

    private int[][] intMatrix = new int[rowlength][length];

    private Random ran = new Random();

    然后产生随机int,拼接和StringBuilder都是基于这个矩阵,才6000个整数。

    for (int i = 0; i < rowlength; i++) {

    for (int j = 0; j < length; j++) {

    intMatrix[i][j] = ran.nextInt();

    }}

    拼接:

    private void doJoin() {

    String rowStr = "";

    Log.d("mooc", "doJoin start:");

    for (int i = 0; i < rowlength; i++) {

    for (int j = 0; j < length; j++) {

    rowStr = rowStr + intMatrix[i][j];

    rowStr = rowStr + ",";

    }

    Log.d("mooc", "doJoin row:" + i);

    }

    Log.d("mooc", "doJoin rowStr:" + rowStr.length());

    }

    很简单的拼接,并每次换行打点log看时间

    log结果:耗时近40秒,而且越到后面拼接的字符串越大每次拼接耗时也越长,不可思

    StringBuilder:

    private void doBld() {

    StringBuilder rowStr = new StringBuilder();

    Log.d("mooc", "doBld start:");

    for (int i = 0; i < rowlength; i++) {

    for (int j = 0; j < length; j++) {

    rowStr.append(intMatrix[i][j]);

    rowStr.append(",");

    }

    Log.d("mooc", "doBld row:" + i);

    }

    Log.d("mooc", "doBld rowStr:" + (rowStr.toString()).length());

    }

    Log结果:耗时16毫秒,瞬间完成

    拼接和StringBuilder果然差距很多,尤其拼接很多的时候

    相关文章

      网友评论

        本文标题:String拼接与StringBuilder性能比较

        本文链接:https://www.haomeiwen.com/subject/jqsdyttx.html