我想知道如果程序员在Stringbuilder append()语句内串联,或者仅使用两个append语句而不是一个,则执行速度会发生变化。
我问这个问题是为了帮助我弄清楚为什么当我们可以串联时才使用StringBuilder类。
串联示例:
public class MCVE {
public static void main(String[] args) {
String[] myArray = {"Some", "stuff", "to", "append", "using", "the",
"StringBuilder", "class's", "append()", "method"};
StringBuilder stringBuild = new StringBuilder();
for(String s: myArray) {
stringBuild.append(s + " ");
}
}
}
Double-Append()示例:
public class MCVE {
public static void main(String[] args) {
String[] myArray = {"Some", "stuff", "to", "append", "using", "the",
"StringBuilder", "class's", "append()", "method"};
StringBuilder stringBuild = new StringBuilder();
for(String s: myArray) {
stringBuild.append(s);
stringBuild.append(" ");
}
}
}
答案 0 :(得分:3)
从理论上讲,是的,串联版本将花费更长的时间,因为它在幕后创建了一个全新的{
'cuisine': None,
'id': 465645,
},{
'cuisine': None,
'id': 521693,
}
,附加了StringBuilder
,附加了s
,然后使用了{{1 }}创建一个字符串,以将其传递给您编码的" "
。 (这就是编译器的工作。要了解特定于 的情况,您需要测试代表实际代码的a benchmark。毕竟,如果JIT成为热点,它将参与其中。在运行时。)
当然,您可能不会注意到。但是,如果您已经在使用toString
,请使用它(改为两次执行append
)。 :-)
(如果上面的第一段都是字符串文字,例如StringBuilder
,则不会为真。)