AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Größe Exe-Datei XE2 -> XE4

Ein Thema von Bernhard Geyer · begonnen am 24. Apr 2013 · letzter Beitrag vom 17. Aug 2014
Antwort Antwort
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.597 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Größe Exe-Datei XE2 -> XE4

  Alt 14. Apr 2014, 12:33
Bei den Generics hat sich geändert, dass ab XE3 die RTL und VCL von TList/TObjectList auf TList<Alle möglichen Klassen> umgestellt wurde. Das bedeutet, dass statt der einen TList/TObjectList Klasse nun um einiges mehr TList<T> herumschwirren, da der Compiler für jedes T eine eigene Kopie anfertigt.

Was früher eine einzige TList mit Typecasts war, ist jetzt TList<TAction>, TList<TComponent>, TList<TField>, TList<...>, ...

Codegenerier-technisch könnte man all die Listen wieder zu einer zusammenfassen, da keine dieser auf irgendwelche speziellen Eigenschaften der Klassen zugreift, also alle mit einem TList<TObject> abbildbar wären. Ein harter Typecast ist nämlich in wirklichkeit nur eine Uminterpretation der Daten, was in Fall von Objekt-Referenzen zu keinem einzigen Maschinencode-Byte führt.
Aber das wollen die für den Compiler Verantwortlichen nicht implementieren.
Hab das mal getestet, das ist ja übel - mit jedem neuen generischem Typ wächst die Exe um rund 20k. Wenn ich da jetzt richtig von gebrauch machen würde und alle unsere um die 50 abgeleiteten TObjectLists auf Generics umstellen würden ...... grusel
Sven Harazim
--
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.114 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Größe Exe-Datei XE2 -> XE4

  Alt 14. Apr 2014, 12:59
Ich habe das nie verstanden, warum die Dinger dann Generics genannt werden und nicht Templates? Denn das sind sie dann im Endeffekt doch, oder?

PS: Von Generics in .Net bzw. deren Unterschied zu C++ Templates habe ich keine Ahnung.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.012 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: Größe Exe-Datei XE2 -> XE4

  Alt 14. Apr 2014, 18:02
Ich habe das nie verstanden, warum die Dinger dann Generics genannt werden und nicht Templates? Denn das sind sie dann im Endeffekt doch, oder?

PS: Von Generics in .Net bzw. deren Unterschied zu C++ Templates habe ich keine Ahnung.
In C# wird der Code für einen Generic, wo der Typparameter ein Referenztyp ist, geshared. D.h. es spielt keine Rolle, ob du eine TList<TAffe> oder TList<TGiraffe> hast, weil beides ein Referenztyp ist. Der C++ Linker hingegen hat eine Optimierungsoption, die dafür sorgt, dass binär gleicher Code wieder rausgeworfen wird. Beides ist in Delphi nicht vorhanden, es wird pro generischer Typ der Code dupliziert.

Einzige Möglichkeit ist, sich da selber (je nach Art des Generics in sehr begrenztem Rahmen) zu behelfen, wie ich in Spring4D zum Beispiel mit den Listen getan habe.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.368 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Größe Exe-Datei XE2 -> XE4

  Alt 14. Apr 2014, 13:22
Hab das mal getestet, das ist ja übel - mit jedem neuen generischem Typ wächst die Exe um rund 20k. Wenn ich da jetzt richtig von gebrauch machen würde und alle unsere um die 50 abgeleiteten TObjectLists auf Generics umstellen würden ...... grusel
Ja, unsere Exe wächst auch ziemlich stark, mittlerweile sind das rund 50 MiB, früher waren es mal unter 10 MiB, natürlich auch mit ein wenig weniger Funktionalität. Aber ein Problem sehe ich da nicht, auch wenn es natürlich schöner wäre, wenn sie kleiner wäre.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:03 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