Java 5种字符串拼接方式性能比较。
来源:互联网 发布:淘宝上好看的包包店铺 编辑:程序博客网 时间:2024/05/18 14:27
- import java.util.ArrayList;
- import java.util.List;
- import org.apache.commons.lang.StringUtils;
- import org.junit.Test;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- public class TestString {
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
- @Test
- public void testPlus() {
- String s = "";
- long ts = System.currentTimeMillis();
- for (int i = 0; i < 10000; i++) {
- s = s + String.valueOf(i);
- }
- long te = System.currentTimeMillis();
- logger.info("+ cost {} ms", te - ts);
- }
- @Test
- public void testConcat() {
- String s = "";
- long ts = System.currentTimeMillis();
- for (int i = 0; i < 10000; i++) {
- s = s.concat(String.valueOf(i));
- }
- long te = System.currentTimeMillis();
- logger.info("concat cost {} ms", te - ts);
- }
- @Test
- public void testJoin() {
- List<String> list = new ArrayList<String>();
- long ts = System.currentTimeMillis();
- for (int i = 0; i < 10000; i++) {
- list.add(String.valueOf(i));
- }
- StringUtils.join(list, "");
- long te = System.currentTimeMillis();
- logger.info("StringUtils.join cost {} ms", te - ts);
- }
- @Test
- public void testStringBuffer() {
- StringBuffer sb = new StringBuffer();
- long ts = System.currentTimeMillis();
- for (int i = 0; i < 10000; i++) {
- sb.append(String.valueOf(i));
- }
- sb.toString();
- long te = System.currentTimeMillis();
- logger.info("StringBuffer cost {} ms", te - ts);
- }
- @Test
- public void testStringBuilder() {
- StringBuilder sb = new StringBuilder();
- long ts = System.currentTimeMillis();
- for (int i = 0; i < 100000; i++) {
- sb.append(String.valueOf(i));
- }
- sb.toString();
- long te = System.currentTimeMillis();
- logger.info("StringBuilder cost {} ms", te - ts);
- }
- }
运行结果如下:
11:00:22,359 INFO TestString:23 - + cost 1828 ms
11:00:22,921 INFO TestString:34 - concat cost 562 ms
11:00:22,937 INFO TestString:46 - StringUtils.join cost 16 ms
11:00:22,968 INFO TestString:58 - StringBuffer cost 31 ms
11:00:23,031 INFO TestString:70 - StringBuilder cost 63 ms
要特别注意的是:
StringBuilder 循环的次数是其它的10倍,如果是一样,那么返回 0,可见StringBuilder 的速度之快。
总结:
用+的方式效率最差,concat由于是内部机制实现,比+的方式好了不少。
Join 和 StringBuffer,相差不大,Join方式要快些,可见这种JavaScript中快速拼接字符串的方式在Java中也非常适用。
StringBuilder 的速度最快,但其有线程安全的问题,而且只有JDK5支持。
0 0
- Java 5种字符串拼接方式性能比较。
- Java 5种字符串拼接方式性能比较
- Java 5种字符串拼接方式性能比较
- Java 5种字符串拼接方式性能比较。 .
- Java 5种字符串拼接方式性能比较。
- Java 5种字符串拼接方式性能比较。
- Java 5种字符串拼接方式性能比较
- Java 5种字符串拼接方式性能比较。
- Java 5种字符串拼接方式性能比较。
- Java 5种字符串拼接方式性能比较。
- Java 5种字符串拼接方式性能比较。
- Java 5种字符串拼接方式性能比较
- Java 5种字符串拼接方式性能比较
- Java 5种字符串拼接方式性能比较
- Java 5种字符串拼接方式性能比较
- Java 5种字符串拼接方式性能比较。
- Java 5种字符串拼接方式性能比较
- Java字符串拼接方式性能比较
- DB2:有关"ERRORCODE=-4499, SQLSTATE=08001"详解
- C++Builder中使用MSCOMM进行串口编程
- Linux常用命令和VI命令
- Node.js实现的BigPipe
- 关于面向对象的理解
- Java 5种字符串拼接方式性能比较。
- MFC种显示jpg图片
- Qt入门(3)——信号和槽
- FreeRADIUS RADWATCH说明
- 排序算法(c实现)------- 插入排序
- VS2010程序向Ubuntu系统的移植
- ubuntu开机自动执行脚本
- [JavaScript] 数字金额大写转换 v2
- linux内核模块依赖图