我有一个关于使用 StringBuilder 的性能相关问题。在一个很长的循环中,我正在操作 StringBuilder
并将其传递给另一个方法,如下所示:
for (loop condition) {
StringBuilder sb = new StringBuilder();
sb.append("some string");
. . .
sb.append(anotherString);
. . .
passToMethod(sb.toString());
}
在每个循环周期实例化 StringBuilder
是一个好的解决方案吗?并且调用 delete 更好,如下所示?
StringBuilder sb = new StringBuilder();
for (loop condition) {
sb.delete(0, sb.length);
sb.append("some string");
. . .
sb.append(anotherString);
. . .
passToMethod(sb.toString());
}
原文由 Pier Luigi 发布,翻译遵循 CC BY-SA 4.0 许可协议
第二个在我的迷你基准测试中快了大约 25%。
结果:
请注意,这是与 JRE 1.6.0_07 一起使用的。
根据 Jon Skeet 在编辑中的想法,这里是版本 2。但结果相同。
结果: