Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#4

Re: Wortliste erstellen: Zählroutine zu langsam

  Alt 10. Mai 2010, 20:30
Zitat von friedemann2009:
EDIT Ich bin baff, das ist ja ultraschneller! Ha, wieder was dazugelernt! Danke nochmals herzlich!!
Ist schon von "Vorteil", wenn man einige 100.000.000 "langsame" Stringoperationen einfach mal wegläßt.

z.B. hier mal das, welches sich hinter TokenListeKorpus.Values versteckt:
Delphi-Quellcode:
procedure TStrings.SetValue(const Name, Value: string);
var
  I: Integer;
begin
  I := IndexOfName(Name);
  if Value <> 'then
  begin
    if I < 0 then I := Add('');
    Put(I, Name + NameValueSeparator + Value);
  end else
  begin
    if I >= 0 then Delete(I);
  end;
end;

function TStrings.GetValue(const Name: string): string;
var
  I: Integer;
begin
  I := IndexOfName(Name);
  if I >= 0 then
    Result := Copy(Get(I), Length(Name) + 2, MaxInt) else
    Result := '';
end;
Da passiert also so Einiges.

Und nochmal bezüglich dem "sortiert" ... die Funktion Find ist im Verhältnis zur Listengröße expotentiell schneller als der "normale" IndexOf:
Delphi-Quellcode:
function TStringList.IndexOf(const S: string): Integer;
begin
  if not Sorted then Result := inherited IndexOf(S) else
    if not Find(S, Result) then Result := -1;
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat