Ab XE7 empfehle ich, GetTypeKind(T)
zu nutzen. Das evaluiert der Compiler direkt und entfernt somit nicht ausgeführte Codepfade.
In der Tat. Ich habe mir das mal im CPU-Fenster angesehen: Je nachdem, mit welchem Datentyp die Klasse TNetGraph instantiiert wird, hat der Compiler im Aufruf von "GetNetitem" bei GetTypeKind nur noch das Benötigte belassen und alles Überflüssige raus gemschmissen.
Anlage 1 zeigt den Source-Code und Anlage 2 die CPU zur Laufzeit bei Instantiierung der Klasse per "Integer". Der direkte Vergleich der 2 Abfragevarianten (Grün=GetTypeKind / Gelb=PTypeInfo) zeigt, dass man mit GetTypeKind erheblich Speicher einsparen kann.
Immerhin ein kleiner Trost für die Tatsache, dass die Verwendung von Generics im Allgemeinen zu Dopplungen des Speicherbedarfes führt (bei Instantiierung der Klasse mit unterschiedlichen Datentypen). Wobei natürlich auch weitere Vorteile von Generics "trösten", z.B. Fehler schon bei der Entwicklung auszumerzen und in gewissem Umfang auch Geschwindigkeitsoptimierungen erzielen zu können.
Guter Tipp!