StringBuffer
和 StringBuilder
之间的主要区别是什么?在决定其中任何一个时是否存在任何性能问题?
原文由 blacktiger 发布,翻译遵循 CC BY-SA 4.0 许可协议
StringBuffer
和 StringBuilder
之间的主要区别是什么?在决定其中任何一个时是否存在任何性能问题?
原文由 blacktiger 发布,翻译遵循 CC BY-SA 4.0 许可协议
StringBuilder
比 StringBuffer
快,因为它不是 synchronized
。
这是一个简单的基准测试:
public class Main {
public static void main(String[] args) {
int N = 77777777;
long t;
{
StringBuffer sb = new StringBuffer();
t = System.currentTimeMillis();
for (int i = N; i --> 0 ;) {
sb.append("");
}
System.out.println(System.currentTimeMillis() - t);
}
{
StringBuilder sb = new StringBuilder();
t = System.currentTimeMillis();
for (int i = N; i > 0 ; i--) {
sb.append("");
}
System.out.println(System.currentTimeMillis() - t);
}
}
}
A test run gives the numbers of 2241 ms
for StringBuffer
vs 753 ms
for StringBuilder
.
原文由 polygenelubricants 发布,翻译遵循 CC BY-SA 3.0 许可协议
8 回答6.8k 阅读
4 回答1k 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
4 回答480 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
2 回答651 阅读✓ 已解决
2 回答1.2k 阅读
StringBuffer
是同步的,StringBuilder
不是。