Java的String与StringBuffer、StringBuilder的性能比较

来源:互联网 发布:php 字符集转换 编辑:程序博客网 时间:2024/05/17 06:13
1.先看下测试代码测试代码如下:[java] view plain copy    package com.gbicc.thread;            public class StringTest {          private void funBuffer() {              String tempstr = "abcdefghijklmnopqrstuvwxyz";              int times = 1500000;              long lstart2 = System.currentTimeMillis();              StringBuffer sb = new StringBuffer();              for (int i = 0; i < times; i++) {                  sb.append(tempstr);              }              long lend2 = System.currentTimeMillis();              long time2 = (lend2 - lstart2);              System.out.println(time2);          }          private void funBuilder() {              String tempstr = "abcdefghijklmnopqrstuvwxyz";              int times = 1500000;              long lstart2 = System.currentTimeMillis();              StringBuilder sb = new StringBuilder();              for (int i = 0; i < times; i++) {                  sb.append(tempstr);              }              long lend2 = System.currentTimeMillis();              long time2 = (lend2 - lstart2);              System.out.println(time2);          }                private void funStr() {              String tempstr = "abcdefghijklmnopqrstuvwxyz";              int times = 100;              long lstart1 = System.currentTimeMillis();              String str = "";              for (int i = 0; i < times; i++) {                  str += tempstr;              }              long lend1 = System.currentTimeMillis();              long time = (lend1 - lstart1);              System.out.println(time);          }                /**          * @param args          */          public static void main(String[] args) {              StringTest test = new StringTest();              test.funBuilder();              test.funBuffer();              test.funStr();          }            }  代码说明:代码里有3个函数,一个是测试String的,一个是测试StringBuffer的,一个是测试StringBuilder的,功能就是让24个英文字母相加。测试的机器配置:2.看下测试结果:时间单位:毫秒次数 String花费时间 StringBuffer花费时间 StringBuilder花费时间1000 47 0~1 0~15000 1187 2 110000 5634 2 112000 8801 3 315000 16347 3 318000 27202 4 420000 35911 4 450000 ...... 12 12100000 ....... 31 30由此可见,当需要对字符串做修改的时候,如果改动频繁,次数太大,用StringBuffer是不二的选择。但是,当次数操作1000000次时,OutOfMemoryError了。

0 0