<div dir="ltr"><div class="gmail_extra">Okay guys, some testing results of my earlier referenced string functions. I went to this page and copied Moby Dick:</div><div class="gmail_extra"><br></div><div class="gmail_extra"><a href="https://www.gutenberg.org/files/2701/2701-h/2701-h.htm">https://www.gutenberg.org/files/2701/2701-h/2701-h.htm</a><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">I save that to 'c:\temp\moby-dick.txt' and ran this test (IStopwatch.Time is seconds elapsed as Double):</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">procedure TForm1.Button1Click(Sender: TObject);</div><div class="gmail_extra">var</div><div class="gmail_extra">  Stopwatch: IStopwatch;</div><div class="gmail_extra">  B: Boolean;</div><div class="gmail_extra">  S, S1, S2: string;</div><div class="gmail_extra">  T1, T2: Double;</div><div class="gmail_extra">  I: Integer;</div><div class="gmail_extra">begin</div><div class="gmail_extra">  Stopwatch := StopwatchCreate;</div><div class="gmail_extra">  Memo1.Lines.Clear;</div><div class="gmail_extra">  S := FileReadStr('c:\temp\moby-dick.txt');</div><div class="gmail_extra">  Memo1.Lines.AddFormat('Length of moby dick text = {0}', [S.Length]);</div><div class="gmail_extra">  Memo1.Lines.AddLine;</div><div class="gmail_extra">  Stopwatch.Reset;</div><div class="gmail_extra">  S1 := S.Replace('Whale', 'The Big Fish', True);</div><div class="gmail_extra">  Stopwatch.Calculate;</div><div class="gmail_extra">  Stopwatch.Calculate;</div><div class="gmail_extra">  T1 := Stopwatch.Time;</div><div class="gmail_extra">  Memo1.Lines.AddFormat('StringHelper.Replace time = {0}', [T1]);</div><div class="gmail_extra">  Stopwatch.Reset;</div><div class="gmail_extra">  S2 := StringReplace(S, 'Whale', 'The Big Fish', [rfReplaceAll, rfIgnoreCase]);</div><div class="gmail_extra">  Stopwatch.Calculate;</div><div class="gmail_extra">  T2 := Stopwatch.Time;</div><div class="gmail_extra">  Memo1.Lines.AddFormat('StringReplace time = {0}', [T2]);</div><div class="gmail_extra">  Memo1.Lines.Add('----------------------------');</div><div class="gmail_extra">  Memo1.Lines.AddFormat('Speed increase: {0:2} x faster', [T2 / T1]);</div><div class="gmail_extra">  Memo1.Lines.AddLine;</div><div class="gmail_extra">  Stopwatch.Reset;</div><div class="gmail_extra">  B := S1.Compare(S2) = 0;</div><div class="gmail_extra">  Stopwatch.Calculate;</div><div class="gmail_extra">  T1 := Stopwatch.Time;</div><div class="gmail_extra">  if B then</div><div class="gmail_extra"><span class="" style="white-space:pre">    </span>  Memo1.Lines.AddFormat('StringHelper.Compare time = {0}', [T1]);</div><div class="gmail_extra">  Stopwatch.Reset;</div><div class="gmail_extra">  B := AnsiCompareText(S1, S2) = 0;</div><div class="gmail_extra">  Stopwatch.Calculate;</div><div class="gmail_extra">  T2 := Stopwatch.Time;</div><div class="gmail_extra">  if B then</div><div class="gmail_extra"><span class="" style="white-space:pre">        </span>  Memo1.Lines.AddFormat('AnsiCompareText time = ', [T2]);</div><div class="gmail_extra">  Memo1.Lines.Add('----------------------------');</div><div class="gmail_extra">  Memo1.Lines.AddFormat('Speed increase: {0:2} x faster', [T2 / T1]);</div><div class="gmail_extra">  Memo1.Lines.AddLine;</div><div class="gmail_extra">  Stopwatch.Reset;</div><div class="gmail_extra">  I := S.MatchCount('Whale', True);</div><div class="gmail_extra">  Stopwatch.Calculate;</div><div class="gmail_extra">  Memo1.Lines.AddFormat('StringHelper.MatchCount = {0}', [I]);</div><div class="gmail_extra">  Memo1.Lines.AddFormat('StringHelper.MatchCount time = {0}', [Stopwatch.Time]);</div><div class="gmail_extra">end;</div><div><br></div><div>Here are the results:</div><div><br></div><div><div>Length of moby dick text = 1239706</div><div><br></div><div>StringHelper.Replace time = 0.0189264156797435</div><div>StringReplace time = 0.810222176252864</div><div>----------------------------</div><div>Speed increase: 42.80 x faster</div><div><br></div><div>StringHelper.Compare time = 0.00125797372311354</div><div>AnsiCompareText time = 0.010209045431111</div><div>----------------------------</div><div>Speed increase: 8.11 x faster</div><div><br></div><div>StringHelper.MatchCount = 1705</div><div>StringHelper.MatchCount time = 0.00554488154011779</div></div><div><br></div></div></div>