Oh D. schrieb:
> Vor allem ist der Richtext+= das absolut Falscheste, das moeglich ist.
> Dabei wird neuer Speicher alloziert, um N byte groessser als vorher,
> alles bisherige kopiert, das neue angehaengt, und weiter geht's. Mach
> einen vordefiniert grossen Speicher, und fuell den vor dem Anzeigen.
Ein Puffer, wie Du ihn vorschlägst, ist eine Alternative. Die andere
ist, die einzelnen Strings in einer Liste zu speichern, und diese dann
am Ende mit einer Funktion wie join() oä. zum Ergebnisstring
zusammenzufügen. Der Vorteil: weil beim Zusammenfügen der Liste die
Größe des Ziel-Strings ja schon bekannt ist, entfallen das ständige das
realloc() und memcpy() der "+="-Lösung. Und der Vorteil gegenüber Deiner
Lösung mit einem Puffer ist, daß der Speicherbedarf nicht größer ist als
unbedingt nötig und man auch dann nicht in Verlegenheit kommt, wenn die
ankommenden Daten dann doch einmal größer sind als der vorallokierte
Puffer.
Ich habe mal eine Software zur Verwaltung der Sedcards einer
Modelagentur optimiert. Da waren die Sedcard-Informationen und die
Bilder der Models als Base64-codierte Strings in XML-Dateien
gespeichert. Diese Dateien mit einem eventbasierten zu parsen, hat mit
der "+="-Methode je nach Anzahl und Größe der Bilder bis zu einer Minute
gedauert, mit der oben beschriebenen Array-Methode hingegen weniger als
zwei Sekunden.