import java.util.Date;

import java.util.UUID;





/**

 * 測试String,StringBuilder性能,推断什么时候改用String,什么时候该用StringBuilder

 * 測试结果

* String              拼接測试,測试长度10000,測试字符串数组长度30,完毕时间721

StringBuilder 拼接測试,測试长度10000,測试字符串数组长度30,完毕时间315

String              拼接測试,測试长度10000,測试字符串数组长度10,完毕时间301

StringBuilder 拼接測试,測试长度10000,測试字符串数组长度10,完毕时间124

String              拼接測试,測试长度10000,測试字符串数组长度5,完毕时间237

StringBuilder 拼接測试,測试长度10000,測试字符串数组长度5,完毕时间68

String              拼接測试,測试长度10000,測试字符串数组长度50,完毕时间1169

StringBuilder 拼接測试,測试长度10000,測试字符串数组长度50,完毕时间504

String     拼接測试,測试长度10000,測试字符串数组长度2,完毕时间188

StringBuilder 拼接測试,測试长度10000,測试字符串数组长度2,完毕时间31

String              拼接測试,測试长度20000,測试字符串数组长度2,完毕时间253

   StringBuilder 拼接測试,測试长度20000,測试字符串数组长度2,完毕时间59

* 

 * 这几组至少是2倍以上的时间差距,

 * 当然小范围的拼接差点儿时间都是能够忽略不计的,可是你假设作为工具类或者大范围的拼接不妨用StringBuilder,哪怕仅仅是拼接两个字符串

 * @author JueYue

 * 

 */

public class StringTest {





public static void main(String[] args) {

int testLength = 10000;

String[] arr = new String[2];

Date start = new Date();

String str = "";

for (int i = 0; i < testLength; i++) {

str = "";

for (int j = 0; j < arr.length; j++) {

str += UUID.randomUUID().toString();

}

}

System.out.println("String 拼接測试,測试长度" + testLength + ",測试字符串数组长度"

+ arr.length + ",完毕时间"

+ (new Date().getTime() - start.getTime()));

start = new Date();

StringBuilder sb;

for (int i = 0; i < testLength; i++) {

sb = new StringBuilder();

for (int j = 0; j < arr.length; j++) {

sb.append(UUID.randomUUID().toString());

}

}

System.out.println("StringBuilder 拼接測试,測试长度" + testLength + ",測试字符串数组长度"

+ arr.length + ",完毕时间"

+ (new Date().getTime() - start.getTime()));

}





}

String,StringBuilder性能对照的更多相关文章

  1. 不同Framework下StringBuilder和String的性能对比,及不同Framework性能比(附Demo)

    本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 阅读目录 介绍 环境搭建 测试用例 MSDN说明 ...

  2. 从.Net版本演变看String和StringBuilder性能之争

    在C#中string关键字的映射实际上指向.NET基类System.String.System.String是一个功能非常强大且用途非常广泛的基类,所以我们在用C#string的时候实际就是在用.NE ...

  3. java中String StringBuilder StringBuffer比较和效率(性能)测试

    string stringbuilder stringbuffer三者的区别 从JDK源码看,String.StringBuilder.StringBuffer都是存放在char[] 数组字符串. 简 ...

  4. java String、String.concat和StringBuilder性能对比

    看到网上有人已经做过对比,并且贴出了代码,然后我运行了之后发现跟我分析的结论差距很大.发现他的代码有个问题,UUID.randomUUID() 首次调用耗时会很高,这个耗时被计算给了String,这对 ...

  5. String, StringBuilder, StringBuffer问题

    1. 区别 String为字符串常量,而StringBuilder和StringBuffer都是字符串变量,其中StringBuilder线程非安全,StringBuffer线程安全. 每次对 Str ...

  6. Java基础学习总结(65)——Java中的String,StringBuilder和StringBuffer比较

    字符串,就是一系列字符的集合. Java里面提供了String,StringBuffer和StringBuilder三个类来封装字符串,其中StringBuilder类是到jdk 1.5才新增的.字符 ...

  7. String字符串性能优化的几种方案

    String字符串是系统里最常用的类型之一,在系统中占据了很大的内存,因此,高效地使用字符串,对系统的性能有较好的提升. 针对字符串的优化,我在工作与学习过程总结了以下三种方案作分享: 一.优化构建的 ...

  8. 【Unity|C#】基础篇(17)——字符串处理(String/StringBuilder)

    [学习资料] <C#图解教程>(第25章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baidu. ...

  9. String字符串性能优化的探究

    一.背景 String 对象是我们使用最频繁的一个对象类型,但它的性能问题却是最容易被忽略的.String 对象作为 Java 语言中重要的数据类型,是内存中占用空间最大的一个对象,高效地使用字符串, ...

随机推荐

  1. 【转载】logistic回归

    原文地址:https://www.cnblogs.com/zichun-zeng/p/3824745.html 1. logistic回归与一般线性回归模型的区别: (1)     线性回归的结果变量 ...

  2. Model View Controller(MVC) in PHP

    The model view controller pattern is the most used pattern for today’s world web applications. It ha ...

  3. 【bzoj4407】于神之怒加强版 莫比乌斯反演+线性筛

    题目描述 给下N,M,K.求 输入 输入有多组数据,输入数据的第一行两个正整数T,K,代表有T组数据,K的意义如上所示,下面第二行到第T+1行,每行为两个正整数N,M,其意义如上式所示. 输出 如题 ...

  4. bzoj 3924 幻想乡战略游戏

    题目大意: 有边权点权的树,动态修改点权 每次修改后求带权重心x (\(minimize\) \(S=\sum_i val[i]*dist[x][i]\)) 分析: 从暴力找突破口: 对于边x,y,设 ...

  5. C#精髓第四讲 GridView 72般绝技

    原文发布时间为:2008-08-03 -- 来源于本人的百度文章 [由搬家工具导入] 原文地址:http://blog.csdn.net/21aspnet/archive/2007/03/25/154 ...

  6. h5页与ios通信

    直接上代码 1 粘第一段 //ios function setupWebViewJavascriptBridge(callback) { if (window.WebViewJavascriptBri ...

  7. MIPS中的异常处理和系统调用【转】

    转自:http://blog.csdn.net/jasonchen_gbd/article/details/44044091 权声明:本文为博主原创文章,转载请附上原博链接. 异常入口 系统调用是用户 ...

  8. Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程

    sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 \  libx11-dev:i386 ...

  9. AC日记——[Sdoi2013]森林 bzoj 3123

    3123: [Sdoi2013]森林 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 3216  Solved: 944[Submit][Status] ...

  10. Android 你应该注意的开发规范

    本文由Blankj投稿. Blankjd的博客地址: http://www.jianshu.com/u/46702d5c6978 为了利于项目维护以及规范开发,促进成员之间Code Review的效率 ...