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

  • 相关阅读:
    手动启动log4j|nginx实现http https共存
    java.util.zip.ZipException: invalid LOC header (bad signature)
    Bean property 'transactionManagerBeanName' is not writable or has an invalid set
    rabbitmq启动异常table_attributes_mismatch
    nexus私服快速update index方法
    Spring boot ,dubbo整合异常
    如何编写无须人工干预的shell脚本
    Jenkins构建部署jar/war后,服务无法在后台持续运行的解决方案
    移动端CSS通用样式
    Spring bean的几种装配方式
  • 原文地址:https://www.cnblogs.com/xinglichao/p/9987030.html
Copyright © 2011-2022 走看看