• 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

  • 相关阅读:
    信号
    序列化数据的两种方式
    ModelForm的使用
    分页模板
    Django中间件进行用户登陆验证
    Flask 笔记一
    pipenv 使用基本命令
    git本地文件 上传 远程仓库
    service "$service" status 返回的状态
    &>/dev/null 的作用
  • 原文地址:https://www.cnblogs.com/xinglichao/p/9987030.html
Copyright © 2020-2023  润新知