Laden...

Stringbuilder.Append versus Strings mit + verketten

Erstellt von YamiSparrow vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.668 Views
Y
YamiSparrow Themenstarter:in
71 Beiträge seit 2008
vor 14 Jahren
Stringbuilder.Append versus Strings mit + verketten

Hallo,

hab mal eine ganz allgemeine Frage. Ich lese hier immer wieder (wie zb heute wieder in dem Datenbank bereich, dass man doch lieber Stringbuilderklassen zum erzeugen eines Strings verwenden sollte, im gegensatz zu einer typischen stringkette mit +

Was hat es damit eigendlich auf sich? Ich persönlich hab Stringbuilder immer für recht sinnlos gehalten, eben wegen der Verkettungsmethode.. aber langsam bin ich mir da auch unsicher. könnt ihr mir helfen?

Danke im voraus!

V
327 Beiträge seit 2005
vor 14 Jahren

das liegt an der Art und Weise wie .Net mit Strings umgeht. Sie haben eine kleine Sonderstellung.

hier ist ein bißchen was dazu zu lesen:

Verwenden der StringBuilder-Klasse
StringBuilder and String Concatenation

StringBuilder ist wesentlich performanter.
Das kannst du auch leicht sebst mal ausprobieren.
Schreib einfach ne for-schleife und lass mal 100 oder 1000 mal strings mit + verketten und dann machst das ganze nochmal mit nem StringBuilder. Das Ergebnis spricht für sich.

grüße

MFG Veasel

Gelöschter Account
vor 14 Jahren

bis 5-8 verkettungen kannst du getrost mit dem '+' operator machen. alles darüber solltest du unbedingt mit stringbuilder machen.

der lesbarkeitshalber solltest du im falle einer verkettung, die in einer zeile abgearbeitet werden kann (z.b. "hallo mr." + namenvariable + ". willkommen" ), lieber string.Format verwenden (auf das beispiel bezogen: string.Format("hallo mr. {0}. willkommen", namenvariable) )

U
237 Beiträge seit 2007
vor 14 Jahren

heute code ich, morgen debug ich und übermorgen cast ich die königin auf int

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo YamiSparrow,

Was hat es damit eigendlich auf sich?

das Grundproblem ist, dass das Verketten mit + nach dem Prinzip des Schlemiel the painter's Algorithm arbeitet, also mit quasi quadratischem Aufwand. Das macht sich praktisch gesehen jedoch erst bei vielen langen Strings bemerkbar. Ab bzw. bis wann sich welche Vorgehensweise anbietet, steht in dem von unclesam verlinkten Artikel.

herbivore