I should add that for my initial assessment of Dragokas' code with the smaller buffer being around 2x as fast compared to what I was using before (a variation on my posted Array approach) - This is still the case when doing a smaller # of smaller string concats (for example, when building something like an SQL string).
Code:Private Sub Form_Click() AutoRedraw = True: Cls Dim x&, y&, Arr$() Dim SB1 As clsStringBuilder, SB2 As vbRichClient5.cStringBuilder, SB3 As Collection, SB4 As CStringBuilderJ Dim s$ New_c.Timing True Set SB1 = New clsStringBuilder For x = 1 To 1000 SB1.Clear For y = 1 To 100 SB1.Append String$(100, "A") SB1.Append vbNewLine Next y Next x s = s & vbCrLf & "Short Dragokas" & vbTab & Len(SB1.ToString) s = s & vbTab & New_c.Timing New_c.Timing True Set SB2 = New_c.StringBuilder For x = 1 To 1000 SB2.Clear For y = 1 To 100 SB2.AppendNL String$(100, "A") Next y Next x s = s & vbCrLf & "Short RC5-SB" & vbTab & Len(SB2.ToString) s = s & vbTab & New_c.Timing New_c.Timing True For x = 1 To 1000 Set SB3 = New Collection ' No Clear/RemoveAll method on VB collection For y = 1 To 100 SB3.Add String$(100, "A") SB3.Add vbNewLine Next y Next x s = s & vbCrLf & "Short VB6 Collection" & vbTab & Len(ConcatCollection(SB3)) s = s & vbTab & New_c.Timing Set SB3 = Nothing New_c.Timing True Set SB4 = New CStringBuilderJ For x = 1 To 1000 SB4.Clear For y = 1 To 100 SB4.Append String$(100, "A"), appendmod_CrLf Next y Next x s = s & vbCrLf & "Short Array" & vbTab & Len(SB4.Value) s = s & vbTab & New_c.Timing New_c.Timing True Dim SB5 As cArrayList Set SB5 = New_c.ArrayList(vbString) For x = 1 To 1000 SB5.RemoveAll For y = 1 To 100 SB5.Add String$(100, "A") Next y SB5.Add vbNewLine Next x s = s & vbCrLf & "Short RC5-ArrList" & vbTab & Len(SB5.Join(vbCrLf)) s = s & vbTab & New_c.Timing txtText1.Text = s Set SB5 = Nothing End Sub




Reply With Quote
