我需要为GWT应用程序选择一种高效的字符串拼接方式。因此,我进行了一项小型测试,认为这对其他人也会有所帮助。
令人惊讶的是,差异非常小:对于1000000个连接,大约只有100毫秒。因此,请从代码阅读角度选择适当的拼接方式。
我的测试很简单:
// + operator
private void str() {
Date start = new Date();
String out = "";
for(int a=0;a<1000000;a++) {
out += "item" + a;
}
Date end = new Date();
MessageBar.error("str:" + (end.getTime() - start.getTime()));
}
// StringBuffer implementation
private void sb() {
Date start = new Date();
StringBuffer out = new StringBuffer();
for(int a=0;a<1000000;a++) {
out.append("item" + a);
}
Date end = new Date();
MessageBar.error("sb:" + (end.getTime() - start.getTime()));
}
结果如下:
str:1612
str:1788
str:1579
sb:1765
sb:1818
sb:1839
String
是不可变的。每次 Java 都需要创建一个新的String
对象。 - Vivin Paliath