String、StringBuffer、StringBuilder賦值速度測(cè)試及線(xiàn)程并發(fā)String賦值測(cè)試

package com.demo;

import com.google.common.collect.Lists;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Callable;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
 * @Filename: StringTest
 * @Author: Zhang Wei
 * @Date: 2018/12/27 14:29
 * @Description:
 * @History:
 */
public class StringTest {

//    @Autowired
//    private ThreadPoolExecutor threadPoolExecutor;

    public static String BASEINFO = "Mr.Y";
    public static int COUNT = 2000000;

    public static void main(String[] args) throws Exception {
        doStringTest();
        doStringBufferTest();
        doStringBuilderTest();
        //線(xiàn)程并發(fā)測(cè)試
//        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(3,
//                10,
//                1,
//                TimeUnit.SECONDS,
//                new ArrayBlockingQueue<>(
//                        1));
//        List<Callable<Void>> tasklist = Lists.newArrayList();
//        tasklist.add(() -> {
//            doStringTest();
//            return null;
//        });
//        tasklist.add(() -> {
//            doStringTest();
//            return null;
//        });
//        threadPoolExecutor.invokeAll(tasklist);

        List<String> list = Lists.newArrayList();
        list.add(" I ");
        list.add(" like ");
        list.add(" BeiJing ");
        list.add(" tian ");
        list.add(" an ");
        list.add(" men ");
        list.add(" . ");

        doStringBufferListTest(list);
        doStringBuilderListTest(list);
    }


    /**
     * 執(zhí)行一項(xiàng)String賦值測(cè)試
     */
    public static void doStringTest() {

        String str = new String(BASEINFO);
        long starttime = System.currentTimeMillis();
        //擁有線(xiàn)程并發(fā)測(cè)試
//        for (int i = 0; i < COUNT; i = 0) {
//            str = str + "miss";
//            COUNT--;
//        }
        for (int i = 0; i < COUNT / 100; i++) {
            str = str + "miss";
        }
        long endtime = System.currentTimeMillis();
        System.out.println((endtime - starttime)
                + " millis has costed when used String.");
    }

    /**
     * 執(zhí)行一項(xiàng)StringBuffer賦值測(cè)試
     */
    public static void doStringBufferTest() {

        StringBuffer sb = new StringBuffer(BASEINFO);
        long starttime = System.currentTimeMillis();
        for (int i = 0; i < COUNT; i++) {
            sb = sb.append("miss");
        }
        long endtime = System.currentTimeMillis();
        System.out.println((endtime - starttime)
                + " millis has costed when used StringBuffer.");
    }

    /**
     * 執(zhí)行一項(xiàng)StringBuilder賦值測(cè)試
     */
    public static void doStringBuilderTest() {

        StringBuilder sb = new StringBuilder(BASEINFO);
        long starttime = System.currentTimeMillis();
        for (int i = 0; i < COUNT; i++) {
            sb = sb.append("miss");
        }
        long endtime = System.currentTimeMillis();
        System.out.println((endtime - starttime)
                + " millis has costed when used StringBuilder.");
    }

    /**
     * 測(cè)試StringBuffer遍歷賦值結(jié)果
     *
     * @param mlist
     */
    public static void doStringBufferListTest(List<String> mlist) {
        StringBuffer sb = new StringBuffer();
        long starttime = System.currentTimeMillis();
        for (String string : mlist) {
            sb.append(string);
        }
        long endtime = System.currentTimeMillis();
        System.out.println(sb.toString() + "buffer cost:"
                + (endtime - starttime) + " millis");
    }

    /**
     * 測(cè)試StringBuilder迭代賦值結(jié)果
     *
     * @param mlist
     */
    public static void doStringBuilderListTest(List<String> mlist) {
        StringBuilder sb = new StringBuilder();
        long starttime = System.currentTimeMillis();
        for (Iterator<String> iterator = mlist.iterator(); iterator.hasNext(); ) {
            sb.append(iterator.next());
        }

        long endtime = System.currentTimeMillis();
        System.out.println(sb.toString() + "builder cost:"
                + (endtime - starttime) + " millis");
    }

}


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容