博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 5种字符串拼接方式(性能比较)
阅读量:4641 次
发布时间:2019-06-09

本文共 2448 字,大约阅读时间需要 8 分钟。

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
list = new ArrayList
(); 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

总结:

用+的方式效率最差,concat由于是内部机制实现,比+的方式好了不少。

Join 和 StringBuffer,相差不大,Join方式要快些,可见这种中快速拼接字符串的方式在中也非常适用。

StringBuilder 的速度最快,但其有线程安全的问题,而且只有JDK5支持。

转载于:https://www.cnblogs.com/pypua/articles/7227637.html

你可能感兴趣的文章
nodejs pm2使用
查看>>
cocos2d-x 3.10 PageView BUG
查看>>
装饰器的基本使用:用户登录
查看>>
CSS选择器总结
查看>>
mysql中sql语句
查看>>
head/tail实现
查看>>
sql语句的各种模糊查询语句
查看>>
vlc 学习网
查看>>
Python20-Day05
查看>>
Real World Haskell 第七章 I/O
查看>>
C#操作OFFICE一(EXCEL)
查看>>
【js操作url参数】获取指定url参数值、取指定url参数并转为json对象
查看>>
ABAP 程序间的调用
查看>>
移动端单屏解决方案
查看>>
web渗透测试基本步骤
查看>>
使用Struts2标签遍历集合
查看>>
angular.isUndefined()
查看>>
第一次软件工程作业(改进版)
查看>>
网络流24题-飞行员配对方案问题
查看>>
Jenkins 2.16.3默认没有Launch agent via Java Web Start,如何配置使用
查看>>