DevTrain .NET Developers Home. Das Community Portal für ASP.NET, Visual Basic, C#
 
  Login Status: Hallo   Anmelden  Suche:  
Navigationslinks überspringen
Startseite
Artikel
Blogs
Foren
ClubClub erweitern

 
Ihre Optionen
Save
Mail
Print
Rate
 
Advertising
  SQLdays konferenz vom 24.-25. Februar 2010 im ehem. IMAX München

 
Navigationslinks überspringen
Autor:Hannes Preishuber

Zeichenketten in der Garbage Collection

Wenn man in den Namespaces und Klassen des Frameworks zu browsen beginnt, kommt allerlei erstaunliches zu Tage. Im Namensraum System.Text finden sich folgende Klassen:

  1. ASCIIEncoding
  2. Encoding
  3. UTF7Encoding 
  4. Decoder
  5. StringBuilder
  6. UTF8Encoding 
  7. Encoder
  8. UnicodeEncoding 

Die En- & Decoding Klassen lasse ich hier mal unberücksichtigt. Im Fokus meines Interesses steht die Stringbuilder Klasse.
Dazu muss zunächst ausgeführt werden, das Strings üblicherweise in der Garbage Collection verwaltet werden. Diese entscheided völlig autark über die Freigabe von verwendeten Speicherplatz. Eine Eigenheit des Frameworks ist, das bei Zuweisung eines Strings immer neuer Speicherplatz belegt wird.
Folgender Code belegt deshalb den Speicherplatz doppelt.

strName=strname+" Preishuber"

Schlimmer wird es bei Zeichenkettenzusammensetzungen wie Sie z.b. für formatierte Ausgaben verwendet werden.
Man kann diesen Effekt auch beobachten. Im Performance Monitor von W2k finden sich neue Counter für den Garbage Collector.

Auf der anderen Seite gibt es eine Klasse, die eben für Stringzusammensetzungen gebaut wurde, die StringBuilder Klasse.
Die Verwendung ist sehr einfach. Über Append wird ein neuer String angefügt.

Dim strFormat as new Stringbuilder
for i = 1 to 1000
 strFormat.Append(" Preishuber")
next i

Weitere wichtige Methoden sind:

  1. AppendFormat
  2. Replace
  3. Insert
  4. Remove

Die Funktionalität ist selbsterklärend.

Da Stringbuilder eine umfangreiche Klasse ist und die Instanz dementsprechend ein großes Objekt ergibt, ist der Einsatz erst ab einer größeren Anzahl sinnvoll. Erfahrungsgemäß liegt die Grenze bei 5 Zeichenketten die addiert werden. Dann aber ist mit Stringbuilder der Code wesentlich schneller.

Dieser Artikel bezieht sich auf die Beta 2 des .NET Frameworks.

 


Diskutieren Sie in den Foren

ppedv AG - 5 Sterne Trainings