2013-03-12 3 views
7

Desidero sapere in confronto della classe MessageFormat o StringBuilder. Diciamo un esempio che ho una stringa. Per quanto riguarda le prestazioni, quale è veloce tra: java.text.MessageFormat.format o StringBuilder("Test ").append("Hello ")?Problema di prestazioni: "java.text.MessageFormat.format" vs "StringBuilder"

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

voglio solo sapere quale è l'uso in caso di buone prassi o le prestazioni saggio

+0

Perché testare la velocità non te stesso? La mia ipotesi: 'StringBuilder' è più veloce. – MrSmith42

+0

StringBuilder è più veloce, ma probabilmente irrilevante. Semplicemente un toString può essere molto più costoso. –

+2

Hai provato da solo? #OneOfTheMostCommonCommentsInSO – rajesh

risposta

1

StringBuilder non aggiungere solo il testo in un buffer dinamica, mentre MessageFormat deve analizzare il formato di data prima di aggiungere i dati , quindi StringBuilder è più efficiente di MessageFormat.

+0

Grazie ..i penso anche allo stesso modo StringBuilder è più veloce di Message.format – user2160287

11

Provate voi stessi:

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"); 

uscita:

MessageFormat: 1125974 ns

StringBuilder: 16705 ns

Conclusione:

StringBuilder funziona molto più veloce perché aggiunge solo alcuni caratteri alla matrice esistente.

+0

Grazie per il tuo contributo – user2160287