Ich hab mal die Tips berücksichtigt und meine Funktion ein wenig zusammengefasst:
ich find ihn noch lesbarer wie meinen Alten.
Tatsächlich gibts wohl Abweichungen im Bereich der 20% alleine durch unterschiedliche CPU, HW und was weis ich.
Schade das niemand eine Assembler Lösung anbietet.
mfg
DerDan
Delphi-Quellcode:
function RemoveDblSpaces3(const InStr: string): string;
var
Src, Dst: PChar;
begin
SetLength(Result, Length(InStr));
Src := Pointer (InStr);
Dst := Pointer (Result);
while (Src^ > #0) do
begin
while (Src^ <> #0) do
begin
Dst^ := Src^;
inc (Dst);
if (Src^ = #32) then break;
inc (Src);
end;
while Src^ = #32 do
begin
inc (Src);
end;
end;
SetLength(Result, (Integer(Dst) - Integer(@Result[1])));
end;
Code:
Zeit1( 35,40 ms)/Zeit2 81,14% = -18,86% (SirThornberry)
Zeit2( 43,63 ms)/Zeit2 100,00% (sakura)
Zeit3( 32,77 ms)/Zeit2 75,12% = -24,88% (derDan neu)
Zeit4( 36,84 ms)/Zeit2 84,44% = -15,56% (jbg)