Funktioniert diese Version bei euch?
Ja, funktioniert jetzt. Allerdings ist das Zeitverhalten (mit Optimierung) noch schlechter als die Standardfunktion
CountChar im StringHelper und damit landet die Lösung in der hiesigen Rangliste auf dem drittletzten Platz. Lediglich die StringReplace-Lösung und die AnsiString-Lösung (vermutlich wegen der bei jedem Aufruf nötigen Umwandlungen) sind noch langsamer.
Hier meine Zeiten für einen Teststring mit 500000
ASCII-Zeichen, Suche nach 'X', jeweils 10000 Calls, Zeiten in Millisekunden:
Zitat:
00000 Calibrate
02292 Uwe Raabe CharCount
02633 KodeZwerg CountCharInString
02953 marabu
03024 Uwe Raabe StringCountCharFor
03046 Egon Hugeist CharCount
03070 Uwe Raabe StringCountChar
03745 Delphi CountChar
03795 alzaimar
03876 Missionar
04028 Neutral General CharCountAsm
05893 Ydobon
06936 KodeZwerg CharInStringA
Eine Kalibrierung des Benchmarks mit einer Fake-Funktion, die aus einem simplen
Result := 0
besteht, brachte erwartungsgemäß 0 ms. Die übrigen Werte schwanken bei wiederholten Aufrufen um weniger als 10%.