DevTrain

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.

 


Erfasst am: 09.10.2001 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=636
© Copyright 2003 ppedv AG - http://www.ppedv.de