Einzelnen Beitrag anzeigen

Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: StringReplace und doppelte Leerzeichen

  Alt 10. Apr 2006, 13: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 W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat