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");
}
}
String、StringBuffer、StringBuilder賦值速度測(cè)試及線(xiàn)程并發(fā)String賦值測(cè)試
?著作權(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ù)。
【社區(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)容
- String 字符串常量 StringBuffer 字符串變量(線(xiàn)程安全) StringBuilder 字符串變量...
- 問(wèn)題1. String的了解問(wèn)題2. String 為什么要設(shè)計(jì)成不可變的? String 與 StringBui...
- 一、String String由于是不可變類(lèi),所以線(xiàn)程安全。 二、StringBuffer以及StringBuil...
- 運(yùn)行速度 StringBuilder > StringBuffer > String String最慢的原因:St...
- String:字符串常量,底層實(shí)現(xiàn)由final char[] 存儲(chǔ)字符串,由于被final修飾,每次增刪操作都需要...