GWT字符串连接运算符+与字符串缓冲区

use*_*529 7 string performance gwt concatenation

我不得不为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()));
}
Run Code Online (Sandbox Code Playgroud)

结果是:

str:1612
str:1788
str:1579
sb:1765
sb:1818
sb:1839
Run Code Online (Sandbox Code Playgroud)

use*_*529 8

关于stan229的问题和比尔蜥蜴的请求.

对于浏览器与浏览器之间的性能差异,这确实很有趣.对我来说,问题是"选择哪种连接方法",我得到了我想要的答案.但这里有更多的测试结果:

chrome 10.0.648.204:
str: 748
sb : 849

firefox 3.6.16:
str: 1681
sb : 1861

ie 8:
str: 2484
sb : 4094

opera 11.10
str: 802
sb : 792
Run Code Online (Sandbox Code Playgroud)

所以,我得到的答案是:+运算符提供更好的性能

我的下一个问题是提供更好性能的原因:

int i=0;
// this
String result = String.valueOf(i);
// or this
String result = i + "";
Run Code Online (Sandbox Code Playgroud)

我会做一次测试,或者,如果你有答案 - 请发帖