Ich hab mich auch mal versucht:
meine Version ist 15 bis 25% schneller als die letzte von sakura!
Delphi-Quellcode:
function RemoveDblSpaces3(InStr: string): string;
var
Src, Dst: PChar;
begin
InStr := InStr + #0;
// I := 0;
SetLength(Result, Length(InStr));
Src := @InStr[1];
Dst := @Result[1];
while (Src^ > #0) do
begin
while (Src^ <> #32) and (Src^ <> #0) do
begin
Dst^ := Src^;
inc (Src);
inc (Dst);
end;
if Src^ = #32 then
begin
Dst^ := Src^;
inc (Src);
inc (Dst);
while (Src^ = #32) do
begin
inc (Src);
end;
end;
end;
SetLength(Result, (Integer(Dst) - Integer(@Result[1])));
end;
Bei meinen Versuchen hat das zwichenspeichern der Result Variablen in einen eigenen String
laufzeit gekostet.
Wie man sieht kommt meine Version ohne Bool Variablen aus, was sicher auch dazu beiträgt das es schnell wird
mfg
Der Dan