测试一下StringBuffer和StringBuilder及字面常量拼接三种字符串的效率
之前一篇里写过字符串常用类的三种方式《java中的字符串相关知识整理》,只不过这个只是分析并不知道他们之间会有多大的区别,或者所谓的StringBuffer能提升多少拼接效率呢?为此写个简单的测试吧:
public static void main(String[] args) {testStringJoin();}static void testStringJoin() {long beg = System.currentTimeMillis();String s = null;for (int i = 0; i < 100000; i++) {s += "ss";}System.out.println("使用+拼接耗时:" + (System.currentTimeMillis() - beg));beg = System.currentTimeMillis();StringBuffer sb = new StringBuffer();for (int i = 0; i < 100000; i++) {sb.append("ss");}System.out.println("使用StringBuffer拼接耗时:" + (System.currentTimeMillis() - beg));beg = System.currentTimeMillis();StringBuilder sbuilder = new StringBuilder();for (int i = 0; i < 100000; i++) {sbuilder.append("ss");}System.out.println("使用StringBuilder拼接耗时:" + (System.currentTimeMillis() - beg));}
代码非常简单,分别用三种方式拼接字符串10万次,然后计算耗时情况,跑下来还是蛮惊人的:
使用+拼接耗时:9102 使用StringBuffer拼接耗时:3 使用StringBuilder拼接耗时:2使用+拼接耗时:8956 使用StringBuffer拼接耗时:5 使用StringBuilder拼接耗时:3
两组跑来的数据,大的数据相差不大,而且表现的结果也是一致的。这里可以看到使用+这种常量拼接对性能消耗极大,10万次用时9000ms,而StringBuffer和StringBuilder只用了不到5ms。看来一个简单的字符串拼接还是要重视的,之前没想到会有这么夸张的体现。
至于StringBuffer和StringBuilder来说差别不是特别大,更多的还是考虑线程安全就可以了,也就是说用StringBuffer是种比较保险的方式吧,除非对性能有极高的要求。
转载于:https://www.cnblogs.com/5207/p/5923119.html
测试一下StringBuffer和StringBuilder及字面常量拼接三种字符串的效率相关推荐
- 清空StringBuilder的三种方法及效率
清空StringBuilder的三种方法及效率 大家知道对于字符串频繁拼接是使用stringbuilder.Append方法比使用string+=方法效率高很多,但有时需要清空stringbuilde ...
- Java中三种字符串的拼接(++ , String.format , StringBuilder.append)
在Java中 , 对字符串内容的拼接是比较常见的操作 , 通常有三种方式 . 用String类重载'+'运算符进行拼接本质上是调用StringBuilder.append . 用类似C的printf风 ...
- 用python画四叶草代码-python—字符串拼接三种方法
1.使用加号(+)号进行拼接 字符串拼接直接进行相加就可以,比较容易理解,但是一定要记得,变量直接相加,不是变量就要用引号引起来,不然会出错,另外数字是要转换为字符串才能够进行相加的,这点一定要记住, ...
- python字符串拼接变量_python—字符串拼接三种方法
1.使用加号(+)号进行拼接 字符串拼接直接进行相加就可以,比较容易理解,但是一定要记得,变量直接相加,不是变量就要用引号引起来,不然会出错,另外数字是要转换为字符串才能够进行相加的,这点一定要记住, ...
- python拼接字符串的方法_python—字符串拼接三种方法
mysql‘事件计划已关闭.事件只能在服务器启动并开启事件计划时才能处理.'的警告 通过下列语句查询event是否开启 show variables like '%sche%'; 通过 ...
- javascript测试三种字符串替换方式效率
//第一种 直接正则表达式替换一次 function replaceTrim1(source){ return source.replace(/^\s|\s$/g,""); } ...
- 1-13 StringBuffer和StringBuilder和常用类
正则表达式 正则表达式是一个特殊字符串,通过这个字符串可以对其他字符串进行验证,正则表达式可以做到约束和验证的目的 使用场景:注册页面[长度,匹配要求,限制字符],邮箱,手机号等等[JS] 演示正则使 ...
- String、StringBuffer、StringBuilder的理解
问题: 理解 Java的字符串,String.StringBuffer.StringBuilder 有什么区别? 知识点 字符串设计和实现考量 String是Immutable(线程安全.字符串常量池 ...
- [JAVA基础类库] String类 ○ StringBuffer类 ○ StringBuilder类
引言 字符串就是一连串的字符序列,Java提供了String.StringBuffer和StringBuilder三个类来封装对字符串,并提供了系列方法来操作字符串对象. String类是不可变类的: ...
最新文章
- 图论 ---- dijkstra变种dp Codeforces Div2 703 E. Paired Payment
- HDU_Virtual Friends (并查集)
- mysql获取多层嵌套json_使用两个mySQL查询来创建嵌套的JSON数组
- linux中看挂载的磁盘用什么命令,使用Linux命令行挂载硬盘和分区 | MOS86
- ECMAScript arguments 对象(摘自W3C)
- java输入行数打印菱形_JAVA题,输入行数,输入列数,输出一个菱形
- 或许是单选的飞鸽传书
- python select
- java提高篇(十三)-----字符串
- xshell左侧导航栏_Axure教程:(初级)导航中的页面切换
- c语言删除堆栈所有的结点,深入浅出数据结构C语言版(15)——优先队列(堆)(示例代码)...
- 国美金融贷款Kube-apiserver源码分析(国美金融贷款)
- 跪求C-MAPSS下载
- 如何在vue中使用Cesium加载shp文件、wms服务、WMTS服务
- Linux第六章课后题
- python列表del_python删除列表元素的三种方法(remove,pop,del)
- Unity3D坦克大战(附代码和原理讲解)
- CCRC认证是什么,ISCCC与CCRC是什么关系?
- Somatic selection distinguishes oncogenes and tumor suppressor genes
- Ericsson open-sources OpenWebRTC and Bowser for iOS; Intel releases IoT developer kit