Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Vorteile/Nachteile einer generischen TObjectList? (https://www.delphipraxis.net/155511-vorteile-nachteile-einer-generischen-tobjectlist.html)

hitzi 26. Okt 2010 19:21

Delphi-Version: 2010

Vorteile/Nachteile einer generischen TObjectList?
 
Hallo,

ich habe eine Itemklasse und möchte diese in einer Liste nutzen. Dies habe ich nun mit einer generischen TObjectList gelöst:
Delphi-Quellcode:
VieleItems : TObjectList<TItem>;
Mit der Lösung kämpfe ich grad noch mit Memoryleaks. Und nun seh ich, dass ich TObjectList und Klassen auch ohne Generics nutzen kann. Deshalb stellt sich mir grad die Frage, wo der Vorteil von einer generischen TObjectList liegt?

Viele Grüße

wicht 26. Okt 2010 19:37

AW: Vorteile/Nachteile einer generischen TObjectList?
 
Der Vorteil ist wohl, dass man beim Zugriff auf ein TItem in der Liste keinen Cast machen muss. Aus TItem(Liste[i]).Machwas wird einfach Liste[i].Machwas. Wegen den Speicherlöchern könnte Liste.OwnsObjects := True nützlich sein.

Bernhard Geyer 26. Okt 2010 19:41

AW: Vorteile/Nachteile einer generischen TObjectList?
 
Performance. Ich denke die Generische Lösung ist sehr viel schneller wegen der nicht nötigen Casts.

Sir Rufo 26. Okt 2010 20:20

AW: Vorteile/Nachteile einer generischen TObjectList?
 
Zitat:

Zitat von Bernhard Geyer;
Performance. Ich denke die Generische Lösung ist sehr viel schneller wegen der nicht nötigen Casts.

Wieso sollte der Typecast mehr Zeit brauchen als der direkte Zugriff?
In der Instanz-Variablen steht doch eh nur der Zeiger auf den Speicherbereich.
Da wird doch nicht umgerechnet

Bernhard Geyer 26. Okt 2010 20:24

AW: Vorteile/Nachteile einer generischen TObjectList?
 
Die is/as-Operationen benötigen einige CPU-Zeit. Impelementier mal eine Ableitung von TList mit harten Casts und eine Ableitung von TObjectList mit sicheren Casts mit is/as.

Bummi 26. Okt 2010 20:54

AW: Vorteile/Nachteile einer generischen TObjectList?
 
Du mußt ja nicht "as" casten
TMyObject(ListItem) ist genauso schnell wie generisch.

nachti1505 26. Okt 2010 21:12

AW: Vorteile/Nachteile einer generischen TObjectList?
 
Zitat:

Zitat von Bummi (Beitrag 1057968)
Du mußt ja nicht "as" casten
TMyObject(ListItem) ist genauso schnell wie generisch.

Ist aber eben kein SICHERER cast!

BUG 26. Okt 2010 21:38

AW: Vorteile/Nachteile einer generischen TObjectList?
 
Zitat:

Zitat von nachti1505 (Beitrag 1057977)
Ist aber eben kein SICHERER cast!

Ja, aber möglich, wenn man sicher (!!!*) weiß, das nur Objekte eines bestimmten Typs (oder dessen Nachfahren) in der Liste sind.

* z.B. private Variable und man lässt Vorsicht walten.

hitzi 27. Okt 2010 06:12

AW: Vorteile/Nachteile einer generischen TObjectList?
 
Danke für die vielen Antworten. Da werde ich bei der generischen TObjectList bleiben und dank Wicht sind die Speicherlecks auch Geschichte :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz