Thema: Delphi Umgang mit Interfaces

Einzelnen Beitrag anzeigen

Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
445 Beiträge
 
Delphi 10.3 Rio
 
#63

AW: Umgang mit Interfaces

  Alt 16. Dez 2013, 16:47
...aber warum das Rad zweimal erfinden?
Code:
fList: TObjectList<TListData>
erfindet ja das Rad nicht neu...

Sind denn diese anderen Listen von einen anderen (eigenen) Listentyp ohne Hash?
Es ist eine einfache Liste (in der Interfacelosen-Variante vom Type TObjectList) ohne weitere Daten (der Besitzer durchläuft sie, um z.B. allen Elementen eine Nachricht zu übermitteln).

Und der entscheidene Unterschied ist: Ich habe keine Speicherlecks beim Beenden (laut FastMM).
Die habe ich auch nicht, solange es keine Quer-Referenzen gibt. Sobald aber eines der Objekte eine zusätzliche Liste pflegt (siehe Beitrag #39, uImpl.pas, Zeile 130), beginnt der Spaß mit der Referenzzählung. Ich nehme an, dass sich das - unabhängig von der verwendeten Liste - nur durch Manipulation der Referenzzählung (Beitrag 45, himitsu), wirklich lösen lässt.

Um wieviel langsamer ist denn die Suche von TDictionary im Verhältnis zu deiner Lösung?
Meine braucht im worst case log2(n) die von Delphi im Durchschnitt n/2, das sind bei 100000 Elementen 17 zu 50000 Vergleiche...


Edit: Was deine Version in #51 angeht, die hat zwar kein Speicherleck, funktioniert aber andererseits auch nicht richtig (du erzeugst zwar 4 Elemente die alle IInteger unterstützen, aber bei der Ausgabe sind es nur mehr 3....)
Whookie

Software isn't released ... it is allowed to escape!

Geändert von Whookie (16. Dez 2013 um 17:04 Uhr)
  Mit Zitat antworten Zitat