Autor Beitrag
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: So 28.08.16 13:14 
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

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Lelf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42
Erhaltene Danke: 21



BeitragVerfasst: So 28.08.16 13:21 
Darüber habe ich mich auch schon sehr gewundert.

Lelf
gerd8888
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 205
Erhaltene Danke: 3

Win7
Delphi 10.1 Starter (kostenlos) Lazarus
BeitragVerfasst: So 28.08.16 13:22 
Hallo Mathematiker,

ich glaube das ist (leider) normal. Das ist bei mir auch so.

Gerd
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: So 28.08.16 13:55 
What Can I Do To Reduce My Executable's Size (Delphi)?
Es macht schon einen riesigen Unterschied, ob man in der Debug- oder der Release-Konfiguration kompiliert, ob die erweiterte RTTI eingebunden wird, etc.

Für diesen Beitrag haben gedankt: Mathematiker
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 28.08.16 15: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.

Für diesen Beitrag haben gedankt: Mathematiker
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: So 28.08.16 17:56 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
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: www.zipplet.co.uk/in...mming_delphi2010rtti (funktionierte bei mir zumindest bei XE2, höheres Delphi habe ich nicht).

Für diesen Beitrag haben gedankt: Mathematiker
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Sa 03.09.16 16: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.