Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: TStringlist: Performance & sort/sorted Frage

  Alt 16. Mär 2009, 19:09
Übrigens geht es noch viel schneller: Es gibt eine Datenstruktur ('Skiplist'), die sehr schnell eine sortierte Liste aufbaut. Anstatt also die Strings in eine Stringlist einzufügen und dann zu sortieren, füge ich sie in die Skiplist ein und lese die Liste anschließend aus.
Ergebnis: Viel viel schneller als Quicksort (QS ist vom Aufwand O(n log n), Die Skiplist-Version ist O(n)...
(1000ms vs. 70ms bei 100000 Strings)

Hier der Code:
Delphi-Quellcode:
Var
  sKey : String;
  sSkipList : TcsSkipList; // <-- The magic Listenstruktur
  slData : TStringList;
  i : Integer;

Begin
  slData := TStringlist.Create;
  sSkipList := TcsStringSkipList.Create(16);
  Try
    for i:=0 to 100000 do
      sSkipList.Insert(intToStr (100000 - i),nil);
    sSkipList.First;
    While not sSkipList.EndOfList do begin
      sSkipList.CurrentData(sKey,nil);
      slData.Add(sKey);
      sSkipList.Next;
    End;
  Finally
    sSkipList.Free;
  End;
...
End;
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat