java8 多行字符串_Java8性能优化之字符串拼接

字符串拼接常用到的几种方式如下:

1、“+”拼接;

2、concat拼接;

3、StringBuilder(StringBuff)拼接。

几种拼接方式的比较测试如下:

代码:

//字符串拼接测试

String appendedStr = "a";

String appendStr= "b";

System.out.println("测试代码循环10000次。。。,结果如下:");long length = 10000;//➕号拼接

long begin =System.currentTimeMillis();for (int i = 0; i < length; i++) {

appendedStr+=appendStr;

}long end =System.currentTimeMillis();

System.out.println("➕号拼接字符串用时:"+(end -begin));//concat拼接

begin =System.currentTimeMillis();for (int i = 0; i < length; i++) {

appendedStr.concat(appendStr);

}

end=System.currentTimeMillis();

System.out.println("concat拼接字符串用时:"+(end -begin));//stringbuilder拼接

begin =System.currentTimeMillis();

StringBuilder stringBuilder= newStringBuilder(appendedStr);for (int i = 0; i < length; i++) {

stringBuilder.append(appendStr);

}

stringBuilder.toString();

end=System.currentTimeMillis();

System.out.println("StringBuilder拼接字符串用时:"+(end - begin));

测试结果如下:

6e8ca7cd83a3827e7d5fcd4dc4b092d3.png

faebbe0106c0964bdfd7bd489cb7411a.png

421a216dccd19cdd5cc72c2fd9b91162.png

其中第一种方式拼接字符串在我的视眼中是最常见的,孰不知第一种方式是最不值得提倡的(性能消耗大,效率低),concat是由String类提供的封装类性能较“+”好很多,相较于前两者StringBuilder的速度基本可以忽略,快太多了。

以上没有测试StringBuff主要是因为StringBuff和StringBuilder的实现实现原理和操作基本上一致,主要差别是StringBuff是由synchronized修饰,支持并发操作线程安全的类。而StringBuilder是不支持并发操作的,所以多线程时建议使用StringBuff。单线程中StringBuilder的性能要好于StringBuff。

StringBuilder 和 StringBuff在单线程下的比较测试如下:

fc987f1de36b5b79513db0505258c061.png

d219ad820a4c732f5efca9e62d959f29.png

6da388b587edcb1b8cd69a16a3cc194b.png

b5b5a70541ddcfcbd9f4323ae8de4073.png

由以上测试结果可以看出,在百万级别以下这两种方式是难分伯仲的,但是上升的千万级别的时候差别就很明显了。

代码优化(性能提升)任重道远,希望大牛能给予建议。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值