string 和stringbuffer性能
网上关于此两者的讨论太多了,但今天看了O'Reilly的Better Faster Lighter Java时,有些别的看法,例如:
String middle = "very, ";
String prefix "This code is ";
String suffix = "ugly."
String result = "";
StringBuffer buffer = new StringBuffer( );
buffer.append(prefix);
for (int i= 0; i<5; i++) {
buffer.append(middle);
}
buffer.append(suffix);
result = buffer.toString( );
or this one:
String result = "This code is ";
for (int i= 0; i<5; i++) {
result = result + "much, ";
}
result = result + "simpler, and neater.";
O'Reilly对此的看法是他并不觉得使用第一种编码会比第二种,实际上,以前旧版本的jvm是不会对string的拼接操作进行优化的,使得每次在进行拼接string时会再生成一个新的对象,因此,当循环数非常大时,例如10000个,你可以在内存中看到10000多个对象(没有回收的前提下),因此对于上千个并发来说,这个是相当恐怖的,但现在的JVM已经相当优化了,它会对string进行解释,因此,他认为上面两种在大批次循环是没有什么区别的,到最后,你同样要maintain a bigger blob of uglier code until the end of time,其实,如果在JVM有进行优化的前提下,第二种是在牺牲了一小部分性能的前提下达到了维护的方便性的,和代码的可读性的,因此个人也同意O'Reilly的看法,呵呵,欢迎大家继续讨论.
String middle = "very, ";
String prefix "This code is ";
String suffix = "ugly."
String result = "";
StringBuffer buffer = new StringBuffer( );
buffer.append(prefix);
for (int i= 0; i<5; i++) {
buffer.append(middle);
}
buffer.append(suffix);
result = buffer.toString( );
or this one:
String result = "This code is ";
for (int i= 0; i<5; i++) {
result = result + "much, ";
}
result = result + "simpler, and neater.";
O'Reilly对此的看法是他并不觉得使用第一种编码会比第二种,实际上,以前旧版本的jvm是不会对string的拼接操作进行优化的,使得每次在进行拼接string时会再生成一个新的对象,因此,当循环数非常大时,例如10000个,你可以在内存中看到10000多个对象(没有回收的前提下),因此对于上千个并发来说,这个是相当恐怖的,但现在的JVM已经相当优化了,它会对string进行解释,因此,他认为上面两种在大批次循环是没有什么区别的,到最后,你同样要maintain a bigger blob of uglier code until the end of time,其实,如果在JVM有进行优化的前提下,第二种是在牺牲了一小部分性能的前提下达到了维护的方便性的,和代码的可读性的,因此个人也同意O'Reilly的看法,呵呵,欢迎大家继续讨论.
...全文
相关推荐
String及StringBuffer和StringBuilder的区别
String及StringBuffer和StringBuilder的区别
String,StringBuffer,StringBuilder区别
String,StringBuffer,StringBuilder区别。几乎所有的应用开发都离不开操作字符串,理解字符串的设计和实现以及相关 工具如拼接类的使用,对写出高质量代码是非常有帮助的
java 中String和StringBuffer与StringBuilder的区别及使用方法
主要介绍了java 中String和StringBuffer与StringBuilder的区别及使用方法的相关资料,在开发过程中经常会用到String 这个类进行操作,需要的朋友可以参考下
Java中String,StringBuffer与StringBuilder的区别
Java中String,StringBuffer与StringBuilder的区别和用法。
Java String 和StringBuffer的详解及区别
主要介绍了Java String 和StringBuffer的详解及区别的相关资料,需要的朋友可以参考下


Java SE

