Java 5种字符串拼接方式性能比较。
最近写一个东东,可能会考虑到字符串拼接,想了几种方法,但对性能未知,于是用Junit写了个单元测试。
代码如下:
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());@Testpublic 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);}@Testpublic 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);}@Testpublic 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);}@Testpublic 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);}@Testpublic 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支持。
转载于:https://www.cnblogs.com/zhujiabin/p/5028883.html
Java 5种字符串拼接方式性能比较。相关推荐
- Golang的五种字符串拼接方式
1.+号 func main() {s1 := "hello"s2 := "word"s3 := s1 + s2fmt.Print(s3) //s3 = &qu ...
- 用数据说话,Go 所有字符串拼接方式里哪种才是最稳定高效的?
前言 日常业务开发中离不开字符串的拼接操作,不同语言的字符串实现方式都不同,在Go语言中就提供了6种方式进行字符串拼接,那这几种拼接方式该如何选择呢?使用那个更高效呢?今天我们邀请到公众号「Golan ...
- 选择合适的 Go 字符串拼接方式
前言 哈喽,大家好,我是asong 日常业务开发中离不开字符串的拼接操作,不同语言的字符串实现方式都不同,在Go语言中就提供了6种方式进行字符串拼接,那这几种拼接方式该如何选择呢?使用那个更高效呢?本 ...
- Go字符串拼接方式深入比较
前言 Go中字符串的拼接主要有"+".fmt.Sprintf+%s.strings.Join等方式,已经有很多人从耗时的角度比较这些方式的性能,本文则从源码的角度去分析下这些方式的 ...
- JAVA的字符串拼接与性能
概述:本文主要研究的是JAVA的字符串拼接的性能,原文中的测试代码在功能上并不等价,导致concat的测试意义不大.不过原作者在评论栏给了新的concat结果,如果有兴趣的同学建议自己修改代码测试. ...
- Go语言6种字符串拼接的方式
Go语言6种字符串拼接的方式 前言 string类型 字符串拼接的6种方式及原理 原生拼接方式"+" 字符串格式化函数fmt.Sprintf Strings.builder byt ...
- C# 字符串拼接整理_C#字符串拼接方式整理
C# 字符串拼接整理_C#字符串拼接方式整理 一.字符串连接使用+ 注意:此方式多种语言通用,js,java中都可以如此操作 string hello = "Hello"; st ...
- 将页面多个下拉框的值以字符串拼接方式存放至数据库一个字段中
1,当页面中有多个值,传入Controller并以字符串拼接方式,以","隔开存放至数据库一个字段中,页面中多个<select name="off"&g ...
- java 字符串倍_java字符串拼接与性能分析详解
假设有一个字符串,我们将对这个字符串做大量循环拼接操作,使用"+"的话将得到最低的性能.但是究竟这个性能有多差?如果我们同时也把StringBuffer,StringBuilder ...
最新文章
- 如何在Tensorflow.js中处理MNIST图像数据
- 如何向mysql表中添加数据类型_java中怎么把data类型的数据添加到数据库?
- 10分钟完成一个业务流程的发布
- MpVue开发之swiper的使用
- 计算广告 pdf_小学生PDF格式的试卷怎么编辑修改
- oracle database 12cr2 使用 dbms_stat 采集统计信息
- java爬虫的2种爬取方式(HTTP||Socket)简单Demo(一)
- net core 中间件(MiddleWare)
- PartitionAssignor分析
- 《自然语言处理简明教程》读书笔记:前言
- 珍藏版创业思维导图,帮你成功创业!
- 适合WhatsApp网页版的4个最好的免费WhatsApp 群发工具
- 港科夜闻丨香港科大团队最新研究:双色发射AIEgen用于无标记特异性识别dsDNA和SNPs检测...
- [Python] 网络设备巡检脚本
- LICEcap:GIF屏幕录制工具
- RTX 4070TI和RTX 4090性能差距 RTX4070ti和4070区别对比
- 用delphi编写医院的复杂报表
- XAMPP介绍、安装及使用
- 一些代码静态检查工具的简介
- 群晖synology LDAP server 同步
热门文章
- 平板电脑计算机怎么关按键音,平板电脑输入法怎么设置【图解】
- 016_泛型常见通配符
- 015-图片文件上传
- 005-SDK框架之LYWSDKCallBackListener.h
- oracle count最快的方法,Oracle count哪种写法更快
- jenkins详细设置(二)
- php写一个轻量级的容器,PHP写的一个轻量级的DI容器类
- php代码冗余度检查插件,冗余代码检测与处理使用什么工具
- RxJava 在Android中的应用(一)
- 第二篇:mysql_____sql语句语法格式