循环1000次
String
StringBuilder
StringBuffer
循环100000次
String
StringBuilder
StringBuffer
可以看到String拼接字符串的时候已经很慢了
那为什么StringBuffer和StringBuilder的速度差不多呢?StringBuffer不是线程安全的吗?不是应该更慢吗?试下一百万次的:
StringBuilder
StringBuffer
看下具体代码,两者都调用的是父类的append方法,唯一不同的是在StringBuffer中,append方法是用synchronized关键字修饰的,可见在jdk1.8中 jdk已经对synchronized关键字优化的很好了:
感觉两者之间速度差距还是不太大,所以个人认为在实际开发过程中,不必要考虑二者的性能问题,需要线程安全的就用StringBuffer,不需要的话就用StringBuilder