zoukankan      html  css  js  c++  java
  • Java中测试StringBuilder、StringBuffer、String在字符串拼接上的性能

    应一个大量字符串拼接的任务

    测试一下StringBuilder、StringBuffer、String在操作字符串拼接时候的性能

    性能上理论是StringBuilder  >  StringBuffer  >  String

    测试方法:

    创建一个StirngTest类含有静态常量字符串是26个字母,以及一个循环轮数

    在测试时采用循环来操作字符串的拼接,计算操作时间并输出:

    package com.test.xlc;
    
    import java.util.Random;
    
    public class StringTest {
        
        static final String strFinal = "abcdefghijklmnopqrstovwxyz";
        static final int forInt = 100;
        
        static void StringBuilderTest() {
            
            Random rand = new Random(47);
            StringBuilder strB = new StringBuilder();
            long start = System.currentTimeMillis();
            for(int i = 0; i < forInt; ++i) {
                int randInt = rand.nextInt(23);
                strB.append(strFinal.substring(randInt, randInt + 4));
            }
            long end = System.currentTimeMillis();
    //        System.out.println(strB.toString());
            System.out.println("StringBuilderTest:" + (end - start));
        }
        
        static void StringBufferTest() {
            Random rand = new Random(47);
            StringBuffer strB = new StringBuffer();
            long start = System.currentTimeMillis();
            for(int i = 0; i < forInt; ++i) {
                int randInt = rand.nextInt(23);
                strB.append(strFinal.substring(randInt, randInt + 4));
            }
            long end = System.currentTimeMillis();
    //        System.out.println(strB.toString());
            System.out.println("StringBufferTest:" + (end - start));
        }
        
        static void StringOnly() {
            Random rand = new Random(47);
            String str = "";
            long start = System.currentTimeMillis();
            for(int i = 0; i < forInt; ++i) {
                int randInt = rand.nextInt(23);
                str += strFinal.substring(randInt, randInt + 4);
            }
            long end = System.currentTimeMillis();
    //        System.out.println(str);
            System.out.println("String:" + (end - start));
        }
        
        
        public static void main(String...args) {
            StringBuilderTest();
            StringBufferTest();
            StringOnly();
            
        }
    }

    测试循环次数:

    100

    StringBuilderTest:0
    StringBufferTest:0
    String:0

    1000

    StringBuilderTest:1
    StringBufferTest:0
    String:7

    10000

    StringBuilderTest:2
    StringBufferTest:2
    String:217

    100000

    StringBuilderTest:12
    StringBufferTest:10
    String:17136

    1000000

    StringBuilderTest:55
    StringBufferTest:53
    我提前终止了

    之后我又测试了拼接长串,本实验结果显示在拼接字符串的效率上:

    StringBuffer  >    StringBuilder  >  String

  • 相关阅读:
    使用MailKit发送邮件
    移动APP设备锁功能开发中的问题
    Xamarin.Form指纹认证
    Android App安装启动时签名校验
    网络编程学习资料
    ASP.NET Core 2.1发布/部署到Ubuntu并配置Nginx反向代理实现ip访问
    @media用法解释
    CSS calc() 函数
    css3属性box-sizing:border-box 用法解析
    浮动塌陷-overflow:hidden来解决
  • 原文地址:https://www.cnblogs.com/xinglichao/p/9987030.html
Copyright © 2011-2022 走看看