stringbuilder klasse vs konventionelles strings zusammenbasteln

    • VB.NET

    Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von mikeb69.

      stringbuilder klasse vs konventionelles strings zusammenbasteln

      Hallo,

      das Framework bietet nicht nur das konventionelle Zusammensetzen von Strings an,

      VB.NET-Quellcode

      1. Dim test as String
      2. test & = "anhängen"

      sondern auch - eine deutlich schnellere Methode.
      Die Stringbuilder Klasse.

      Hier mal eine Tabelle, wie sich die beiden Methoden in der Geschwindigkeit unterscheiden.


      Hier ein Beispielcode:

      VB.NET-Quellcode

      1. Imports System.Text
      2. Public Class Form1
      3. Private values() As Integer = {100, 500, 1000, 5000, 10000, 50000, 100000}
      4. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
      5. 'string nach der herkömmlichen methode zusammensetzen
      6. Dim sw1 As New Stopwatch
      7. Dim sw2 As New Stopwatch
      8. For v As Integer = 0 To values.Count - 1
      9. 'normale methode
      10. sw1.Start()
      11. Dim test1 As String = ""
      12. For i As Integer = 0 To values(v) - 1
      13. test1 &= "0"
      14. Next
      15. sw1.Stop()
      16. 'stringbuilder-klasse
      17. sw2.Start()
      18. Dim test2 As New StringBuilder
      19. For i As Integer = 0 To values(v) - 1
      20. test2.Append("0")
      21. Next
      22. sw2.Stop()
      23. 'werte in listview ausgeben
      24. Dim lvi As ListViewItem = Me.ListView1.Items.Add(values(v).ToString)
      25. lvi.SubItems.Add(sw1.ElapsedMilliseconds.ToString & " ms")
      26. lvi.SubItems.Add(sw2.ElapsedMilliseconds.ToString & " ms")
      27. sw1.Reset()
      28. sw2.Reset()
      29. Next
      30. End Sub
      31. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      32. With Me.ListView1
      33. .View = View.Details
      34. .Columns.Add("Anzahl der Zeichen", 100, HorizontalAlignment.Right)
      35. .Columns.Add("Normal", 100, HorizontalAlignment.Right)
      36. .Columns.Add("Stringbuilder", 100, HorizontalAlignment.Right)
      37. End With
      38. End Sub
      39. End Class

      Bitte beachten, dass das Listview erst am Schluss richtig dargestellt wird.
      Dies kann - je nach Rechner - eine Weile dauern.

      Gruss

      mikeb69
      Danke für diesen Source, hatte probleme mit einem String, der ~700MB groß war... hatte zwar schon ne eigene Klasse dafür entwickelt allerdings in unmanaged c ... das funktioniert mit dem StringBuilder fast genauso schnell.