Tipp 0114 String vs. StringBuilder
Autor/Einsender:
Datum:
  Michael Werner
03.04.2006
Entwicklungsumgebung:   VB.Net 2003
Framework:   1.1
Dieser Tipp demonstriert die Performance-Unterschiede zwischen String und StringBuilder bei einer vielzahligen String-Verkettung. Eine String-Instanz ist ein Objekt, dass unveränderlich ist. Ändert man den Wert des Strings, so wird immer eine neue Instanz gebildet. Die Unveränderlichkeit von Zeichenketten führt insbesondere bei umfangreichen String-Manipulationen zu erheblichen Performance-Einbußen. Die StringBuilder-Klasse bietet hier Abhilfe. Eine einzige StringBuilder-Instanz reicht aus, um Zeichenketten vielfach zu verändern. Diese Tatsache spiegelt sich bei größeren Schleifen deutlich in der kürzeren Durchlaufzeit wieder. Fazit: Bei umfangreichen Zeichenketten-Schleifen sollte man auf jeden Fall den StringBuilder bevorzugen.
 
  Private Sub StartStringBuilder()
    Dim builder As New StringBuilder
    Dim i As Int32

    Button1.Enabled = False
    Button2.Enabled = False

    Label10.Text = ""
    NumericUpDown1.Enabled = False
    Me.Cursor = Cursors.WaitCursor

    TimerStringBuilder.Enabled = True
    dtDiffZeit = DateTime.Now

    For i = 1 To intAnzahl
      builder.Append(strText)
      Application.DoEvents()
      Label1.Text = i.ToString
    Next

    Label10.Text = "1 StringBuilder-Objekt"
    TimerStringBuilder.Enabled = False
    Button1.Enabled = True
    Button2.Enabled = True
    NumericUpDown1.Enabled = True
    Me.Cursor = Cursors.Default
  End Sub

  Private Sub StartString()
    Dim s As String
    Dim i As Int32

    Button1.Enabled = False
    Button2.Enabled = False
    Label9.Text = ""
    NumericUpDown1.Enabled = False
    Me.Cursor = Cursors.WaitCursor

    TimerString.Enabled = True
    dtDiffZeit = DateTime.Now

    For i = 1 To intAnzahl
      s = s & strText
      Application.DoEvents()
      Label2.Text = i.ToString
    Next

    TimerString.Enabled = False
    Label9.Text = intAnzahl.ToString & " String-Objekte"
    Button1.Enabled = True
    Button2.Enabled = True
    NumericUpDown1.Enabled = True
    Me.Cursor = Cursors.Default
  End Sub
 
Weitere Links zum Thema
Stringvergleich mit String.Compare

Windows-Version
98/SE
ME
NT
2000
XP
Vista
Win 7


Download  (7,6 kB) Downloads bisher: [ 367 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Tipps | Projekte | Tutorials | Bücherecke | VB-/VBA-Tipps | API-Referenz | Komponenten | VB.Net-Forum | VB/VBA-Forum | DirectX-Forum | Foren-Archiv | DirectX | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Freitag, 29. Juni 2012