天天看點

java string.format_如果性能很重要,我應該使用Java的String.format()嗎?

我編寫了一個小類進行測試,該類具有兩者的更好性能,并且+領先于格式。以5到6的倍數進行嘗試

import java.io.*;

import java.util.Date;

public class StringTest{

public static void main( String[] args ){

int i = 0;

long prev_time = System.currentTimeMillis();

long time;

for( i = 0; i< 100000; i++){

String s = "Blah" + i + "Blah";

}

time = System.currentTimeMillis() - prev_time;

System.out.println("Time after for loop " + time);

prev_time = System.currentTimeMillis();

for( i = 0; i<100000; i++){

String s = String.format("Blah %d Blah", i);

}

time = System.currentTimeMillis() - prev_time;

System.out.println("Time after for loop " + time);

}

}

對不同的N運作上面的結果表明,兩者的行為都是線性的,但String.format速度要慢5-30倍。

原因是在目前實作中,String.format首先使用正規表達式解析輸入,然後填充參數。另一方面,與plus的連接配接通過javac(而不是JIT)進行優化,并StringBuilder.append直接使用。

java string.format_如果性能很重要,我應該使用Java的String.format()嗎?