Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
Delphi 12 Athens
|
Re: StringReplace und doppelte Leerzeichen
10. Apr 2006, 14:59
Zitat von Jasocul:
Vielleicht hat Pichel ja Lust, die Varianten zu vergleichen?
Vielleicht, vielleicht aber auch nicht Hier mal der TestCode (2 Labels auf einer Form)
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
x: array[0..27] of string = (
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
#32, #32#32
);
TEST = 1000;
var
Start, Stop, Freq: Int64;
I: Integer;
Source, Work, Dest: string;
begin
Source := '';
for I := 0 to 5000 do
Source := Source + x[Random(Length(x))];
QueryPerformanceFrequency(Freq);
QueryPerformanceCounter(Start);
for I := 1 to TEST do
begin
Work := Source;
Dest := RemoveDblSpaces(Work);
end;
QueryPerformanceCounter(Stop);
Label1.Caption := Format('%f ms', [(Stop - Start) / Freq * 1000]);
QueryPerformanceCounter(Start);
for I := 1 to TEST do
begin
Work := Source;
while Pos(' ', Work) > 0 do
Delete(Work, Pos(' ', Work), 1);
Dest := Work;
end;
QueryPerformanceCounter(Stop);
Label2.Caption := Format('%f ms', [(Stop - Start) / Freq * 1000]);
end;
Variante 1: ca. 42 ms
Variante 2: ca. 1567 ms
Vernichtendes Urteil gegen die while/Delete-Schleife
... ...
Daniel Lizbeth Ich bin nicht zurück, ich tue nur so
|