String拼接与StringBuilder性能比较

都说如果有频繁的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果然差距很多,尤其拼接很多的时候

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容