|
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
|
|
|
|
|
Windows-Version |
98/SE |
|
|
ME |
|
|
NT |
|
|
2000 |
|
|
XP |
|
|
Vista |
|
|
Win
7 |
|
|
|
|
Download (7,6 kB)
|
Downloads bisher: [ 367 ]
|
|
|