Java How To
 


String-Verbindung mit +-Operator

How To ...

Wie steigere ich die Performanz der String-Concatenation?

Hintergründe

Der String-Concatenations-Operator (+) ist sehr einfach zu verwenden, sollte jedoch vermieden werden, wenn innerhalb von Schleifen viele Strings aneinandergehängt werden sollen. Der Grund hierfür ist, dass Strings immutable, d.h. nicht änderbar sind. Beim Aufruf des Operators muss also immer zuerst Platz für das Ergebnis angelegt und dann die beiden Argumente hineingeschrieben werden. Um n Strings mit + aneinander zu hängen, wird eine Laufzeit benötigt, die quadratisch in n ist. Probieren Sie die folgende Methode mit einem großen Parameterwert aus:

    public static String anhaengenSchlecht(int anzahl) {
            String s = "";
            for (int i = 0; i < anzahl; i++) {
                    s += EIN_STRING;
            }
            return s;
    }
		

So geht's

Anstatt Strings mit + aneinanderzuhängen benutzt man die Klasse StringBuffer und deren Methode append(). Der n-malige Aufruf dieser Methode bleibt linear in n. Die Methode

    public static String anhaengenGut(int anzahl) {
            StringBuffer s = new StringBuffer(anzahl * EIN_STRING.length());
            for (int i = 0; i < anzahl; i++) {
                    s.append(EIN_STRING);
            }
            return s.toString();
    }
		

benötigt wesentlich weniger Laufzeit als die erste Methode. Mit einem Parameter von 5000 benötigt die erste Methode 19877 ms, die zweite Methode 3 ms! Glauben Sie nicht? Selbst ausprobieren!

Formatierter Quell-Code

Java-Source

Falls nur wenige Strings aneinanderzuhängen sind, sollte man weiterhin + verwenden, wie Sie hier nachlesen können.