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