PS: Wieso misst Du die Zeit so komisch? Ich würde das so machen:
Führe 'RemoveChars' 1000x aus und miss die Zeit, danach führe 'RemoveCharsFromString' 1000x aus. Teile beide Zeiten durch 1000. Damit hast Du auch die 18ms Ungenauigkeit vom 'TimeStamp' (falls es die gibt) bereinigt.
N mal laufen lassen und dann die Zeit durch N teilen heißt, dass alles, was das System in der Zeit macht, in die Zeitmessung einfließt.
Genau das möchte ich mit den Einzelmessungen ja vermeiden.
Die Annahme ist, dass zumindest bei einem der Durchläufe keine Interrupts stattfinden.
"TimeStamp" braucht minimal so um die 25 CPU-Ticks (nicht ms), aber da kann man auch Überraschungen erleben.
Versuch mal
Delphi-Quellcode:
MinT1:=High(Int64);
MaxT1:=0;
for I:=1
to 1000000
do begin
T0:=TimeStamp;
T1:=TimeStamp;
Dec(T1,T0);
MinT1:=Min(MinT1,T1);
MaxT1:=Max(MaxT1,T1);
end;
ShowMessage(IntToStr(MinT1)+#13+IntToStr(MaxT1));