1. 程式人生 > 其它 >Java 例項 - 字串效能比較測試

Java 例項 - 字串效能比較測試

技術標籤:java

以下例項演示了通過兩種方式建立字串,並測試其效能:

StringComparePerformance.java 檔案
public class StringComparePerformance{
public static void main(String[] args){
long startTime = System.currentTimeMillis();
for(int i=0;i<50000;i++){
String s1 = “hello”;
String s2 = “hello”;
}
long endTime = System.currentTimeMillis();

System.out.println(“通過 String 關鍵詞建立字串”
+ " : “+ (endTime - startTime)
+ " 毫秒” );
long startTime1 = System.currentTimeMillis();
for(int i=0;i<50000;i++){
String s3 = new String(“hello”);
String s4 = new String(“hello”);
}
long endTime1 = System.currentTimeMillis();
System.out.println(“通過 String 物件建立字串”
+ " : " + (endTime1 - startTime1)
+ " 毫秒");
}
}
以上程式碼例項輸出結果為:

通過 String 關鍵詞建立字串 : 6 毫秒
通過 String 物件建立字串 : 14 毫秒
由於初始值不一樣,3次比較出來的時間不具有對比性,應在同等條件下比較計算花費時間;

public class StringOptimization {
public static void main(String[] args) {
String variables[] = new String[50000];
long startTime0 = System.currentTimeMillis();

for (int i = 0; i < 50000; i++) {
variables[i] = “hello”;
}

    long endTime0 = System.currentTimeMillis();
    System.out.println("使用字面量直接賦值字串,花費時間:" + (endTime0 - startTime0) + "毫秒");
    String variables1[] = new String[50000];
    long startTime1 = System.currentTimeMillis();
    for (int i = 0; i < 50000; i++) {
        variables1[i] = new String("hello");
    }

    long endTime1 = System.currentTimeMillis();
    System.out.println("使用字串物件花費時間:" + (endTime1 - startTime1) + "毫秒");
    String variables2[] = new String[50000];
    long startTime2 = System.currentTimeMillis();
    for (int i = 0; i < 50000; i++) {
        variables2[i] = new String("hello");
        variables2[i] = variables2[i].intern();
    }

    long endTime2 = System.currentTimeMillis();
    System.out.println("使用字串物件intern()方法花費時間:" + (endTime2 - startTime2) + "毫秒");
}

}
輸出結果為:

使用字面量直接賦值字串,花費時間:1毫秒
使用字串物件花費時間:3毫秒
使用字串物件intern()方法花費時間:8毫秒