應一個大量字符串拼接的任務
測試一下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
