当前位置:  编程技术>java/j2ee

java字符串拼接与性能分析详解

    来源: 互联网  发布时间:2014-10-31

    本文导语:  假设有一个字符串,我们将对这个字符串做大量循环拼接操作,使用”+”的话将得到最低的性能。但是究竟这个性能有多差?如果我们同时也把StringBuffer,StringBuilder或String.concat()放入性能测试中,结果又会如何呢?本文将会就...

假设有一个字符串,我们将对这个字符串做大量循环拼接操作,使用”+”的话将得到最低的性能。但是究竟这个性能有多差?如果我们同时也把StringBuffer,StringBuilder或String.concat()放入性能测试中,结果又会如何呢?本文将会就这些问题给出一个答案!

我们将使用Per4j来计算性能,因为这个工具可以给我们一个完整的性能指标集合,比如最小,最大耗时,统计时间段的标准偏差等。在测试代码中,为了得到一个准确的标准偏差值,我们将执行20个拼接”*”50,000次的测试。下面是我们将使用到的拼接字符串的方法:

代码如下:

Concatenation Operator (+)
String concat method – concat(String str)
StringBuffer append method – append(String str)
StringBuilder append method – append(String str)

最后,我们将看看字节码,来研究这些方法到底是如何执行的。现在,让我们先开始来创建我扪的类。注意为了计算每个循环的性能,代码中的每段测试代码都需要用Per4J库进行封装。首先我们先定义迭代次数

代码如下:

private static  final int  OUTER_ITERATION=20; 
private static final int INNER_ITERATION=50000; 

接下来,我们将使用上述4个方法来实现我们的测试代码。

代码如下:

String addTestStr = ""; 

String concatTestStr = ""; 

StringBuffer concatTestSb = null; 

StringBuilder concatTestSbu = null; 

for (int outerIndex=0;outerIndex

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java实现判断字符串是否全是数字的四种方法代码举例
  • Java中关于字符串字符数目的问题
  • java字符串比较获取字符串出现次数的示例
  • 在JAVA中如何实现在一个长字符串查找某个字符串??
  • 我使用corba将Java和C程序连接起来,由Java向C传递一个字符串,但是我发现我原来的0a被换成了0d 0a,那位给各解释。
  • 用Java正则去掉字符串中重复出现的字符
  • java实现压缩字符串和java字符串过滤
  • java 字符串有沒有 像 javascript 中 split() 的方法.
  • 如何从java字符串中判断空格在第几位
  • java把字符串写入文件里的简单方法分享
  • java中如何将数字转化为字符串并且不足位数补0
  • 如可在java程序中产生一个几乎永不重复的字符串?
  • 使用java如何分析系统不能识别的字符串?
  • 菜鸟问题:在Java中如何接收从键盘输入的字符串?
  • 请问JAVA中怎样去掉字符串后面的空格,谢谢!!!
  • JAVA求字符串的子串,谢谢!
  • 在java/jsp里怎样判断一个yyyymmdd格式的字符串是合法的日期型字符串,并求两日期字符串之间的天数?
  • 请问在Java里有没有 运算一个字符串的方法? 如vbscript的 eval("3+5*2") = 13
  • java中一个逻辑判断字符串 (1&&0)如何转变成boolean值?
  • java字符串的合并
  • Java判断字符串为空、字符串是否为数字
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3