Dies ist eine Fortsetzung von Last Post.
Beim letzten Mal habe ich geschrieben, dass es besser ist, die Append-Methode von StringBuilder zu verwenden, wenn Sie eine String-Verkettung in Java durchführen.
Ich sehe jedoch gelegentlich Code, der Missbrauch anhängt.
Zum Beispiel dieser Code
StringBuilder sb = new StringBuilder();
String val = "hoge";
sb.append("[" + val + "]")
String-Joins mit +
verlangsamen den Prozess, da jedes Mal ein String-Objekt erstellt wird.
In diesem Beispiel wurde das String-Objekt im Teil "[" + val + "]" "erstellt, sodass sich die Verarbeitungsgeschwindigkeit möglicherweise verlangsamt.
Lass uns das machen
StringBuilder sb = new StringBuilder();
String val = "hoge";
sb.append("[").append(val).append("]");
Anstatt "+" für die Verbindung zu verwenden, verwenden Sie "Anhängen" mehrmals, um eine Verbindung herzustellen.
Wie stark ändert sich die Verarbeitungsgeschwindigkeit vor und nach der Verbesserung?
Ich habe die Verarbeitungsgeschwindigkeit mit dem folgenden Code verglichen.
public class StringBuilderTest{
public static void main(String[] args) {
final int MAX_COUNT = 100;
System.out.println("Anzahl der Joins:" + MAX_COUNT + "Wann");
StringBuilder sb1 = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
long resultTime1;
long resultTime2;
long startTime;
long endTime;
/*********************Vor der Verbesserung: anhängen()Bei der Durchführung einer String-Kombination innerhalb*********************/
//Startzeit
startTime = System.nanoTime();
for (int i = 0; i < MAX_COUNT; i++) {
sb2.append(Integer.toString(i) + "\n");
}
//Endzeit
endTime = System.nanoTime();
//Berechnen Sie die für die Verarbeitung benötigte Zeit
resultTime1 = endTime - startTime;
/*********************Nach der Verbesserung: anhängen()Bei zweimaliger Verwendung*********************/
//Startzeit
startTime = System.nanoTime();
//String Join von StringBuilder
for (int i = 0; i < MAX_COUNT; i++) {
sb1.append(Integer.toString(i)).append("\n");
}
//Endzeit
endTime = System.nanoTime();
//Zeit genommen
resultTime2 = endTime - startTime;
System.out.println("① append()Die Bearbeitungszeit beim Beitritt erfolgt innerhalb von:" + resultTime1 + "Nano Sekunden");
System.out.println("② append()Verarbeitungszeit bei zweimaliger Verwendung:" + resultTime2 + "Nano Sekunden");
System.out.println("② ist besser" + (resultTime1 - resultTime2) + "Nano Sekunden schneller");
}
}
Es ist ein Programm, das den Unterschied in der Verarbeitungsgeschwindigkeit vergleicht, wenn die Zeichenkettenkombination 100 Mal ausgeführt wird.
Das Ergebnis ist unten.
Es ist schneller, "Anhängen" zweimal zu verwenden.
Eigentlich ist dieser Artikel ein Nachdruck aus dem Blog. Ich poste auch über andere Dinge in meinem Blog.
Recommended Posts