![]() |
Delphi-Version: 11 Alexandria
Warnung vor massivem Einsatz von Generics in Delphi
Hallo zusammen,
ich überlege schon länger, ob ich diesen Post verfassen und meine Erkenntnisse mit der Community teilen sollte. Heute habe ich mich schließlich dazu überwunden. Unsere Vorgeschichte: Wir setzen aktuell Delphi 11.3 ein. Vor einigen Jahren wurde im Rahmen der Modernisierungsarbeiten eine interne Empfehlung herausgegeben, wann immer möglich, generische Typen, entweder aus der internen Basisbibliothek oder aus dem Spring-Framework abzuleiten und zu verwenden. Grundsätzlich ist dieser Schritt begrüßenswert und richtig. Doch keiner aus unserem Team konnte zu diesem Zeitpunkt ahnen, welche langfristigen Folgen dies haben wird. Die Folgen sind:
Ich bin ein Fan von Generics, aber unter diesen Umständen kann ich vom weiträumigen Einsatz in großen Delphi-Projekten nur abraten! Das Spring4D-Framework, so sehr ich es auch mag, sticht hier leider nochmals unangenehm hervor, wahrscheinlich weil die Ableitungshierarchien sowohl in den Interfaces als auch in den implementierenden Klassen tief verschachtelt sind. In Spring4D v2 hat Stefan schon sehr viel gegen den Code-Bloat getan, aber gegen den hohen RAM-Verbrauch des Compilers/Linkers kann er nicht viel tun. Dies kann nur Embarcadero fixen. So, jetzt habe ich mal meinen Frust hier kund getan und bin gespannt, ob es irgendjemandem hier auch so ergeht? |
AW: Warnung vor massivem Einsatz von Generics in Delphi
Zitat:
![]() |
AW: Warnung vor massivem Einsatz von Generics in Delphi
Ich danke dir für deinen Post. Geht mir auch alles so.
Ich find's interessant, dass sich nicht die DCU aufbläht, wo Variablen mit der generischen Klasse deklariert werden, sondern eine andere DCU, die viele von diesen Variablen genutzt werden - obwohl zu dem Zeitpunkt schon klar ist, welche Typen damit verwendet werden und welche nicht. Die Erklärung ist gut. |
AW: Warnung vor massivem Einsatz von Generics in Delphi
Das war auf jeden Fall interessant zu lesen und kurzweilig erklärt 👍
Wir sind glücklicherweise noch nicht an dem Punkt wo dem Compiler/Linker grundsätzlich der Speicher ausgeht, aber vor allem die Linker-Zeiten machen wirklich echt keinen Spaß mehr. Gibt es denn, außer dem Versuch die Toolkette auf 64 Bit umzustellen um das Problem zu verdecken, noch andere Entwicklungen in den letzten Jahren? Unsere Hauptanwendung ist immer noch auf Delphi 10.0 Seattle - Ist es in den letzten Versionen eher besser, schlechter oder unverändert? |
AW: Warnung vor massivem Einsatz von Generics in Delphi
Ohhhh, Danke dass du dir die Arbeit gemacht hast.
Wir verwenden 11.1. Dessen LSP mag scheinbar Generics generell nicht sonderlich. Zum Einsatz kommen die eigentlich fast nur wo es Delphi gerne so haben möchte. Alles andere decke ich mit der guten alten TStringList oder Memtables ab. |
AW: Warnung vor massivem Einsatz von Generics in Delphi
Äh, nur um sicherzugehen:
Die generischen Typen selbst, nicht die Klassen aus der Generics-unit sind das Problem, oder? D.h. bei TList<T> ist "T" das Problem, und nicht die generische Liste selbst, bzw eine TList<TWasAuchImmer> mit einem spezifischen Typ TWasAuchImmer wäre unproblematisch? |
AW: Warnung vor massivem Einsatz von Generics in Delphi
Zitat:
Aber wie schon Eingangs geschrieben, wird es erst zum Problem, wenn die Masse an solchen generischen Entitäten eine gewisse Schwelle überschreitet. |
AW: Warnung vor massivem Einsatz von Generics in Delphi
Zitat:
|
AW: Warnung vor massivem Einsatz von Generics in Delphi
@WladiD: Ist das mit der Spring4D v2 immer noch so? Ich habe da das im Kopf (siehe weiter unten nach den Benchmarks:
![]() |
AW: Warnung vor massivem Einsatz von Generics in Delphi
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz