Jetzt wird's aber interessant! Hier mal die Laufzeiten für Win64 (die
ASM-Funktion fällt da logischerweise raus):
Zitat:
00000 Calibrate
03719 1234588 miep
07360 Ydobon
03548 marabu
04122 Missionar
03711 alzaimar
08399 Uwe Raabe StringCountChar
03597 Uwe Raabe StringCountCharFor
02869 KodeZwerg CountCharInString
07099 KodeZwerg CharInStringA
Neutral General CharCountAsm - Target missed: 0 <> 7982
00000 Neutral General CharCountAsm
02183 Uwe Raabe CharCount
03043 Egon Hugeist CharCount_1
03678 Egon Hugeist CharCount_2
02816 Egon Hugeist CharCount_Double_Sided
04076 Delphi CountChar
Der große Verlierer ist hier erstaunlicherweise StringCountChar
Delphi-Quellcode:
Result := 0;
for Ch in S do begin
Inc(Result, Ord(Ch = C));
end;
während die normale For-Schleife nicht so stark einbricht
Delphi-Quellcode:
Result := 0;
for I := Low(S) to High(S) do begin
Inc(Result, Ord(S[I] = C));
end;
Die CharCount scheint allerdings vom 64-Bit Compiler zu profitieren.