Entwickler-Ecke
Sonstiges (Delphi) - EXE-Größen bei Delphi 10
Mathematiker - So 28.08.16 12:14
Titel: EXE-Größen bei Delphi 10
Hallo,
nachdem ich es geschafft habe, ein paar alte D5-Texte unter Delphi 10 zu compilieren, ergibt sich für mich ein kleines Problem.
Die EXE-Dateien sind unter Delphi 10 fünfmal(!) so groß im Vergleich zu Delphi 7. Ist das normal, oder habe ich etwas falsch gemacht?
2 Beispiele:
D7: 402 k ... Delphi 10: 2188 k
D7: 434 k ... Delphi 10: 2376 k
Beste Grüße
Mathematiker
Lelf - So 28.08.16 12:21
Darüber habe ich mich auch schon sehr gewundert.
Lelf
gerd8888 - So 28.08.16 12:22
Hallo Mathematiker,
ich glaube das ist (leider) normal. Das ist bei mir auch so.
Gerd
jaenicke - So 28.08.16 14:30
Zunächst stellt sich die Frage warum das ein Problem ist. Ich meine heute müssen Programme ja nicht mehr auf eine Diskette passen usw.
Bei den genannten Exe-Größen bist du jedenfalls schon im Release-Build vermute ich (denn im Debugmodus sind die bei einem leeren Projekt etwas über 10 MiB groß). Viel kleiner geht also kaum mit einfachen Mitteln.
Gründe für die Größe gibt es einige:
- Mehr Funktionalität: Die Standardunits von Delphi können einfach viel mehr, von Unterstützung für neue Betriebssysteme über andere neue Features...
- Die neue RTTI: Es werden viel mehr Metadaten über den Code einkompiliert um z.B. auf Eigenschaften und Felder eines Objekts zur Laufzeit über den Namen zugreifen zu können, Methoden über den Namen auszuführen usw.
- Wieder die RTTI: Dadurch dass diese Informationen einkompiliert werden, kann der Linker weniger Code entfernen, da nicht mehr festgestellt werden kann, ob dieser über die RTTI vielleicht doch verwendet wird.
- Das Standardicon ist größer, damit es auch bei größeren Ansichten gut aussieht
- Und andere kleinere Änderungen
Die RTTI kann man entfernen, wenn man sie nicht braucht, dann kommt man im Release-Build eines leeren VCL-Projekts statt auf 2154 KiB auf 1736 KiB.
Etwa 50 KiB entfallen auf das Icon.
Viel mehr geht nicht so einfach. Ich würde auch nicht empfehlen mit solchen Tricks anzufangen. Die Größe einer Exe ist heutzutage in 99,9% der Fälle schlicht irrelevant.
Anders sieht es im mobilen Bereich aus. Da sind die großen Apps von Delphi nicht so angenehm.
Delphi-Laie - So 28.08.16 16:56
jaenicke hat folgendes geschrieben : |
Zunächst stellt sich die Frage warum das ein Problem ist. Ich meine heute müssen Programme ja nicht mehr auf eine Diskette passen usw. |
1. Die Quota(s) für die Anhänge haben sich nach meiner Beobachtung in diversen Delphiforen seit Jahren nicht verändert, jedenfalls nicht offiziell.
2. Das ist ganz einfach eine Frage der Eleganz und der "Sauberkeit" des Quellcodes, möglichst kleine Compilate zu bewirken. Gut, man könnte es auch wie Luckie mit Non-VCL auf die Spitze treiben....
Mathematiker, hier im Schnelldurchlauf die Möglichkeiten, die Delphi-Compilatsgrößen zu verringern:
1. NonVCL
2. Nicht benötigte Units entfernen
3. benötigte Units abspecken, ggf. nur benötigten Code extrahieren und entsprechende Unit(s) entfernen
4. Debuginformationen in Compiler/Linker entfernen:
Projekt -> (Standard)Optionen -> Compiler
Haken bei
- Optimierung an
- bei [Laufzeitfehler] und [Debuggen] alles weg
5. Wohl in Projektdatei: RTTI:
{$weaklinkrtti on}
{$rtti explicit methods([]) properties([]) fields([])}
6. KOL-(System-)Units verwenden
7. Möglichst kleine / frühe Delphiversion verwenden
(8. upx)
9. Laufzeittypinformationen aus möglichst vielen eingebundenen Units entfernen:
http://www.zipplet.co.uk/index.php/content/articles_programming_delphi2010rtti (funktionierte bei mir zumindest bei XE2, höheres Delphi habe ich nicht).
Delphi-Laie - Sa 03.09.16 15:30
Interessanterweise wirkt sich das:
4. Debuginformationen in Compiler/Linker entfernen:
Projekt -> (Standard)Optionen -> Compiler
Haken bei
- Optimierung an
- bei [Laufzeitfehler] und [Debuggen] alles weg
nur auf die Größe der compilierten Units, also auf die DCU-Dateien aus (ist zumindest bei Delphi 7 so). Die Größe der EXE-Dateien scheint sich davon nicht beeindrucken zu lassen. Anscheinend entfernt der Delphi-Compiler - unabhängig von den Einstellungen, wie die genannten Optionen (de)aktiviert sind - beim Linken (was ja genaugenommen kein Compilieren mehr ist) diese Informationen in jedem Falle. Insofern erstaunt mich die hohe Übersetzungsgeschwindigkeit.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!