首先看多次相加
String 循环10000次,后两者是100000,累加次数是String的10倍
long start = System.currentTimeMillis();
String result = "";
for (int i = 0; i < 10000; i++) {
String s1 = "hello";
String s2 = "world";
int s3 = 1000;
result += s1;
result += s2;
result += s3;
}
System.out.println(System.currentTimeMillis() - start);
start = System.currentTimeMillis();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 100000; i++) {
String s1 = "hello";
String s2 = "world";
int s3 = 1000;
sb.append(s1);
sb.append(s2);
sb.append(s3);
}
sb.toString();
System.out.println(System.currentTimeMillis() - start);
start = System.currentTimeMillis();
StringBuffer sb2 = new StringBuffer();
for (int i = 0; i < 100000; i++) {
String s1 = "hello";
String s2 = "world";
int s3 = 1000;
sb2.append(s1);
sb2.append(s2);
sb2.append(s3);
}
sb2.toString();
System.out.println(System.currentTimeMillis() - start);
看下运行时间
结果是:7549
36
33
比较稳定
6687
34
31
这是就先累加10次(内循环10次累加),但必须要循环执行多次(外循环)才能看出效果!这里循环10W次。,都一样。
long start = System.currentTimeMillis();
String s = "hello world";
for (int i = 0; i < 100000; i++) {
String result = "";
for(int j=0; j<10; j++){
result += s;
}
}
System.out.println(System.currentTimeMillis() - start);
start = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
StringBuilder sb = new StringBuilder();
for(int j=0; j<10; j++){
sb.append(s);
}
sb.toString();
}
System.out.println(System.currentTimeMillis() - start);
start = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
StringBuffer sb2 = new StringBuffer();
for(int j=0; j<10; j++){
sb2.append(s);
}
sb2.toString();
}
System.out.println(System.currentTimeMillis() - start);
结果为:
304
88
117
如果,把累加次数改为20次(内循环,j<20)
806
164
209
30次, 性能提升还是比较大的。(当然是在循环10W的基础上)
1397
275
483
想起来以来看过的一篇帖子,比较的JSP和PHP运算字符串的能力。
看结果就知道用的是String累加的!这种比较没意思!