2013-03-12 12 views
7

Chcę poznać w porównaniu z klasą MessageFormat lub StringBuilder. Powiedzmy przykład, że mam ciąg. Jeśli chodzi o wydajność, która jest szybka pośród: java.text.MessageFormat.format lub StringBuilder("Test ").append("Hello ")?Problem z wydajnością: "java.text.MessageFormat.format" kontra "StringBuilder"

String txt = java.text.MessageFormat.format("Test {0}"," Hello") 
String txt1= new StringBuilder("Test ").append("Hello ") 

Chcę tylko wiedzieć, który z nich jest zastosowanie w przypadku najlepszych praktyk lub wykonania mądry

+0

Dlaczego przyspieszasz testowanie nie samemu? Zgaduję: 'StringBuilder' jest szybszy. – MrSmith42

+0

StringBuilder jest najszybszy, ale prawdopodobnie nieistotny. Po prostu toString może być znacznie droższy. –

+2

Czy próbowałeś sam? #OneOfTheMostCommonCommentsInSO – rajesh

Odpowiedz

1

StringBuilder ma dołączyć tylko tekst do dynamicznego bufora, natomiast MessageFormat musi przeanalizować daną formatu przed dołączenie danych , a następnie StringBuilder jest bardziej wydajny niż MessageFormat.

+0

Dzięki ..i również myślę w ten sam sposób StringBuilder jest szybszy niż Message.format – user2160287

11

Spróbuj to sam:

long start = System.nanoTime(); 
String txt = MessageFormat.format("Test {0}"," Hello"); 
System.out.println("MessageFormat: " + (System.nanoTime() - start) + " ns"); 

start = System.nanoTime(); 
String txt1 = new StringBuilder("Test ").append("Hello").toString(); 
System.out.println("StringBuilder: " + (System.nanoTime() - start) + " ns"); 

wyjściowy:

MessageFormat: 1125974 ns

StringBuilder: 16705 ns

Wniosek:

StringBuilder działa znacznie szybciej, ponieważ dodaje tylko niektóre znaki do istniejącej macierzy.

+0

Dzięki za twoje wejście – user2160287

Powiązane problemy