Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Delphi vs. Freepascal und THashedStringList

  Alt 20. Jan 2020, 13:31
Vielleicht ist die Liste, bzw. sind zumindestens die Hashs in FP standardmäßig soritert und in Delphi eben nicht standardmäßig.

Als Erklärung, auf eine Datenbank bezogen:
TStringList.IndexOf ohne Sortierung ist ein FullTableScan
und mit Sortierung ist es ein IndexScan.

[add]
In Delphi XE ist es immer ein "teilweiser" FullScan.
Und in Delphi2007 wird das nicht anders gewesen sein.
Delphi-Quellcode:
unit IniFiles;

//THashedStringList = class(TStringList)

function TStringHash.Find(const Key: string): PPHashItem;
var
  Hash: Integer;
begin
  Hash := HashOf(Key) mod Cardinal(Length(Buckets));
  Result := @Buckets[Hash];
  while Result^ <> nil do
  begin
    if Result^.Key = Key then
      Exit
    else
      Result := @Result^.Next;
  end;
end;
Für Delphi würde ich dann eher ein TDictionary<T> empfehlen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (20. Jan 2020 um 13:35 Uhr)
  Mit Zitat antworten Zitat