String,StringBuffer,StringBuilder,StringWriter的效率差
2015-02-11 17:14
351 查看
String最慢其次StringBuffer,最快StringBuilder,而且字符串的操作也影响着效率。
没有数据显得没有说服力,做了一下实验。
n=1000
n=10000
去掉String比较一下后两者
n=1000000:
我分配的空间就不足了,也许Buffer的效率会高吧。。。
没有数据显得没有说服力,做了一下实验。
import java.io.StringWriter; public class LearnTest { <span style="white-space:pre"> </span>public static void main(String[] args) { <span style="white-space:pre"> </span>// TODO Auto-generated method stub\ <span style="white-space:pre"> </span>String str=""; <span style="white-space:pre"> </span>StringBuffer strbf=new StringBuffer(""); <span style="white-space:pre"> </span>StringBuilder strbd=new StringBuilder(""); <span style="white-space:pre"> </span>StringWriter strwr=new StringWriter(); <span style="white-space:pre"> </span>double begin,end; <span style="white-space:pre"> </span>begin=System.currentTimeMillis(); <span style="white-space:pre"> </span>for(int i=0;i<100000;i++) <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>str+="1000"; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>end=System.currentTimeMillis(); <span style="white-space:pre"> </span>System.out.println("String+=: "+(end-begin)); <span style="white-space:pre"> </span>str=""; <span style="white-space:pre"> </span>begin=System.currentTimeMillis(); <span style="white-space:pre"> </span>for(int i=0;i<100000;i++) <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>str=str+"1000"; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>end=System.currentTimeMillis(); <span style="white-space:pre"> </span>System.out.println("String=+: "+(end-begin)); <span style="white-space:pre"> </span>begin=System.currentTimeMillis(); <span style="white-space:pre"> </span>for(int i=0;i<100000;i++) <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>strbf.append("1000"); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>end=System.currentTimeMillis(); <span style="white-space:pre"> </span>System.out.println("StringBuffer: "+(end-begin)); <span style="white-space:pre"> </span>begin=System.currentTimeMillis(); <span style="white-space:pre"> </span>for(int i=0;i<100000;i++) <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>strbd.append("1000"); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>end=System.currentTimeMillis(); <span style="white-space:pre"> </span>System.out.println("StringBuilder: "+(end-begin)); <span style="white-space:pre"> </span>begin=System.currentTimeMillis(); <span style="white-space:pre"> </span>for(int i=0;i<100000;i++){ <span style="white-space:pre"> </span>strwr.append("1000"); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>end=System.currentTimeMillis(); <span style="white-space:pre"> </span>System.out.println("StringWriter:"+(end-begin));<span style="white-space:pre"> </span> <span style="white-space:pre"> </span>} }测试结果
n=1000
String+=: 11.0 String=+: 3.0 StringBuffer: 0.0 StringBuilder: 0.0 StringWriter: 0.0
n=10000
String+=: 250.0 String=+: 191.0 StringBuffer: 1.0 StringBuilder: 0.0 StringWriter: 3.0n=100000
String+=: 19375.0 String=+: 20145.0 StringBuffer: 5.0 StringBuilder: 1.0 StringWriter: 7.0可以发现递增非线性,可能跟函数状态的保存有关系
去掉String比较一下后两者
n=1000000:
StringBuffer: 40.0 StringBuilder: 22.0 StringWriter: 42.0n=10000000:
StringBuffer: 413.0 StringBuilder: 418.0 StringWriter: 379.0n=100000000
我分配的空间就不足了,也许Buffer的效率会高吧。。。
相关文章推荐
- String,StringBuffer,StringBuilder效率优先关系说明
- java中String、StringBuilder和StringBuffer效率的比较
- string , stringbuilder ,stringbuffer 效率对比
- Java学习札记14:一个比较String、StringBuffer和StringBuilder之间效率差别的简单例子
- String,StringBuffer,StringBuilder区别与效率
- java中String,StringBuffer,StringBuilder拼接效率对比
- String,StringBuffer,StringBuilder的效率区别
- String,StringBuffer,StringBuilder拼接操作的效率对比
- String,StringBuffer,StringBuilder效率与内存占用比较
- String、StringBuffer、StringBuilder的区别与效率比较
- String,StringBuffer,StringBuilder区别与效率
- 拼接字符串的效率问题(String,StringBuffer,StringBuilder对比)
- java中String,StringBuffer,StringBuilder拼接效率对比
- String的兄弟姐妹和亲戚:StringBuilder,StringBuffer,StringReader,StringWriter,StringBufferInputStream
- String, StringBuffer, StringBuilder拼接字符串的执行效率比较
- String,StringBuffer,StringBuilder效率对比
- String,StringBuffer,StringBuilder的效率问题
- String,StringBuffer和StringBuilder的区别
- String,StringBuilder,StringBuffer
- String、StringBuilder、StringBuffer 用法比较