Heim  >  Artikel  >  Java  >  Artikel Achten Sie auf die Leistung der Zeichenfolgenverkettung

Artikel Achten Sie auf die Leistung der Zeichenfolgenverkettung

DDD
DDDOriginal
2024-10-17 22:24:29698Durchsuche

1. String-Verkettung mit dem Operator ( ):
Die Verwendung des Operators zum Verketten von Zeichenfolgen ist für einige Verkettungen praktisch, führt jedoch aufgrund der Unveränderlichkeit von Zeichenfolgen zu Leistungsproblemen bei umfangreichen Vorgängen.
Jedes Mal, wenn eine neue Zeichenfolge erstellt wird, wird der Inhalt aller vorherigen Zeichenfolgen kopiert, was bei großen Verkettungen zu einer quadratischen Zeit führt.

Falsches Beispiel (wiederholte Verkettung mit ):

public String criaFatura(List<Item> itens) {
    String fatura = "";
    for (Item item : itens) {
        fatura += item.toString();  // ineficiente para grandes listas
    }
    return fatura;
}

2. Mit StringBuilder die Leistung verbessern:
Verwenden Sie anstelle von StringBuilder, mit dem Sie Zeichenfolgen effizient ändern und nach Bedarf dynamisch Speicher zuweisen können.
Die Verkettungszeit mit StringBuilder ist linear, was die Leistung erheblich verbessert.

Richtiges Beispiel (Verwendung von StringBuilder):

public String criaFatura(List<Item> itens) {
    StringBuilder fatura = new StringBuilder(itens.size() * 80);  // pré-alocação
    for (Item item : itens) {
        fatura.append(item.toString());
    }
    return fatura.toString();
}

3. Leistungsvergleich:
Selbst nach Verbesserungen in Java 6 zur Optimierung des Operators ist die Verwendung von StringBuilder weiterhin effizienter. Auf einer Testmaschine war die Verwendung von StringBuilder 6,5-mal schneller als der Bediener in einem Szenario mit 100 Elementen.

Beispiel für eine Optimierung ohne Vorbelegung:

public String criaFatura(List<Item> itens) {
    StringBuilder fatura = new StringBuilder();  // sem pré-alocação
    for (Item item : itens) {
        fatura.append(item.toString());
    }
    return fatura.toString();
}

4. Die Moral der Geschichte:
Verwenden Sie es nicht, um viele Zeichenfolgen zu verketten. Die Leistung wird schnell inakzeptabel, wenn die Anzahl der Verkettungen zunimmt.
Verwenden Sie StringBuilder.append oder Alternativen wie Zeichenarrays für große Mengen an Verkettungen.

5. Weitere Alternativen:
Zusätzlich zu StringBuilder können Sie die Verwendung von Zeichenarrays für umfangreiche Verarbeitung oder zum effizienteren Kombinieren von Zeichenfolgen in Betracht ziehen, insbesondere wenn eine genauere Kontrolle der Leistung erforderlich ist.

Fazit:
Verwenden Sie StringBuilder, um Zeichenfolgen effizient zu verketten.
Vermeiden Sie die Verwendung des Operators in Schleifen oder für große Mengen an Zeichenfolgen, da die Leistung mit zunehmender Anzahl von Verkettungen erheblich abnimmt.

Beispiele aus dem Buch:

Item  Cuidado com o desempenho da concatenação de string

Item  Cuidado com o desempenho da concatenação de string

Das obige ist der detaillierte Inhalt vonArtikel Achten Sie auf die Leistung der Zeichenfolgenverkettung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn