String,StringBuffer,StringBuilder的性能比较

来源:互联网 发布:生日快乐软件在线制作 编辑:程序博客网 时间:2024/05/16 08:05

首先看多次相加

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);

看下运行时间

结果是:

75493633
比较稳定
66873431


实际情况是,我们很少会对一个字符串累加那么多次吧!上百次应该都很少。

这是就先累加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);

结果为:

30488117

如果,把累加次数改为20次(内循环,j<20)

806164209

30次, 性能提升还是比较大的。(当然是在循环10W的基础上)

1397275483


想起来以来看过的一篇帖子,比较的JSP和PHP运算字符串的能力。



看结果就知道用的是String累加的!这种比较没意思!




原创粉丝点击