Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   EXE-Größe (https://www.delphipraxis.net/161860-exe-groesse.html)

Neumann 25. Jul 2011 05:41

EXE-Größe
 
Hallo,

habe gestern ein merkwürdiges Phänomen festgestellt.

Bin gerade dabei, ein vorher mit D2006 entwickelte Anwendung auf D XE zu portieren. Dies geht auch soweit; die Größe der EXE ist dabei von knapp 10 MB auf rund 14 MB gewachsen, was sich durch Unicode, Verwenden von TMS-Smoothcontrols usw. sicher begründen lässt.

Bei der Weiterentwicklung ohne wirklich gravierende Veränderungen ist die Größe der EXE plötzlich auf 33 MB angestiegen. Leider kann ich nicht genau sagen wann und warum. Debug-Infos an/abschalten bringen keine wesentlichen Änderungen.

Die Summe der DCUs ist etwa 10 MB. Der Project-Analyser gibt folgende Zusammenfassung:

Units: 629, Forms: 159, Code: 10213600, ICode: 182376, Data: 116260, Bss: 563564, Resources: 3136512

Das entspricht wieder 14 MB.

Warum die 33 MB? Diese Größe ist schon lästig, da das Programm oft per Fernwartung übertragen werden soll.

jaenicke 25. Jul 2011 06:15

AW: EXE-Größe
 
Bist du sicher, dass du das richtige Häkchen weggenommen hast? Es gibt zweimal das Häkchen Debuginformationen, einmal unter Compilieren, einmal unter Linken.

Das Entscheidende für die Größe der Exe ist das unter Linken!

Neumann 25. Jul 2011 06:28

AW: EXE-Größe
 
Ja die Häckchen sind raus. Auch die Infos geben nicht plausible Angaben:

Codegrösse: 10,4 MB
Datengrösse: 0,6 MB

Dateigröße 35 MB

Alle Werte gerundet.

jaenicke 25. Jul 2011 06:56

AW: EXE-Größe
 
Sonst fiele mir nur mehr ein die .dcu Dateien und die .exe zu löschen und dann das Projekt neu zu erstellen.

Ich schaue mir mal an wie die Analysedaten sich bei mir zu der Dateigröße verhalten. (Auf dem Handy unterwegs geht das grad nicht gut.)

Bernhard Geyer 25. Jul 2011 07:08

AW: EXE-Größe
 
Zitat:

Zitat von Neumann (Beitrag 1113377)
Ja die Häckchen sind raus.

Es ist ein kompletter Rebuild nötig damit die Änderungen auch wirklich komplett für alle Units angewendet sind und die Exe-Größe entsprechend sich ändert.

Phoenix 25. Jul 2011 07:37

AW: EXE-Größe
 
XE hat gegenüber Delphi 2006 die erweiterte RTTI. Die bläht die .Exe auch nochmal etwas auf.

Neumann 25. Jul 2011 07:48

AW: EXE-Größe
 
Habe ich alles gemacht. DCUs gelöscht, immer komplett neu erstellt.

Die extreme Änderung der EXE Größe kam nicht sofort nach Portierung das ergab eine Änderung von 9,5 auf 13 MB,wie ich schon geschrieben habe. Damit kann ich klar kommen. Aber 35 MB sind mir zu viel.

mleyen 25. Jul 2011 08:55

AW: EXE-Größe
 
Das steht bei mir in nahezu jeder *.dpr:
Delphi-Quellcode:
{$IF CompilerVersion >= 17.0} 
  {$SetPEFlags 1} // 1 = Windows.IMAGE_FILE_RELOCS_STRIPPED
{$IFEND}

{ Reduce EXE size by disabling as much of RTTI as possible (delphi 2009/2010) } 
{$IF CompilerVersion >= 21.0} 
  {$WEAKLINKRTTI ON} 
  {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])} 
{$IFEND}
:-D:-D

(über den uses)

jaenicke 25. Jul 2011 09:09

AW: EXE-Größe
 
Wobei man da natürlich aufpassen muss, ob man die benutzt oder benutzen will. Hier wird das sicher nicht der Fall sein, aber bei einigen Tools, an denen ich arbeite, wären diese Zeilen vermutlich tödlich. ;-)

Neumann 25. Jul 2011 09:13

AW: EXE-Größe
 
Die Direktiven mache die EXE 3 MB kleiner, also immer noch 32 MB.

Habe mal ein anderes Projekt untersucht, da ist die Codegröße + Datengröße etwa die Größe der EXE.

Sollte sich immer ein 20 MB großer Virus an meine EXE hängen? Kommt mir wenig wahrscheinlich vor.

CCRDude 25. Jul 2011 09:29

AW: EXE-Größe
 
Schau doch mal in den PE-Header der Datei, in die Sektionstabelle (etwa per FileAlyzer). Welche Section benötigt denn den Overhead? Davon ausgehend ist es etwas einfacher, die Ursache einzugrenzen.

Neumann 25. Jul 2011 09:52

AW: EXE-Größe
 
Danke für den Tipp mit dem PE-Header.

Es waren doch die Debug-Infos des Linkers, die die EXE so aufblähen. War mir sicher, dass ich diese Ausgeschaltet hatte, aber nach Neustart waren sie zumidest wieder da. Gesehen habe ich so etwas vorher noch nie, habe vorher auch oft das Programm mit Debug-Infos rausgegeben. Anscheinend ist hier ein wesentlicher Unterschied zwischen D2006 und D XE.

Danke für alle Tipps

jaenicke 25. Jul 2011 10:09

AW: EXE-Größe
 
Liste der Anhänge anzeigen (Anzahl: 1)
Nein, da hat sich nicht wirklich was geändert, aber bist du wirklich sicher, dass du die richtigen Debuginformationen umgeschaltet hast? :gruebel:

Anhang 34779

Die untere Option ist das Entscheidende.

Neumann 25. Jul 2011 10:22

AW: EXE-Größe
 
Ja, es war die untere (Linker). Prüfe das nachher mal mit D2006. Eine entsprechende Programmversion mit Quelltext existiert noch.

Coder 25. Jul 2011 10:33

AW: EXE-Größe
 
Liste der Anhänge anzeigen (Anzahl: 1)
30 MB einer Exe. ...

hachja, was waren das damals noch für Zeiten ...
(als man noch Bilder als auf das Original verweisende Thumbnails oder überhaupt Images direkt anzeigen konnte)

als eine leere Forumluar-Exe noch 156 KB hatte (Delphi 2)
oder 177 unter Delphi 3


http://img28.imageshack.us/img28/222...725083948x.png

http://img402.imageshack.us/img402/3...7250835183.png



OT: Warum wurden eigentlich Bilder deaktiviert?
sind doch eigentlich nützlich?

himitsu 25. Jul 2011 11:28

AW: EXE-Größe
 
Liste der Anhänge anzeigen (Anzahl: 2)
Sicher daß Bilder deaktiviert sind?


Zitat:

Zitat von Neumann (Beitrag 1113377)
Ja die Häckchen sind raus. Auch die Infos geben nicht plausible Angaben:

Codegrösse: 10,4 MB
Datengrösse: 0,6 MB

Dateigröße 35 MB

Zählen die Resourcen mit zu den Daten?

Neumann 25. Jul 2011 12:51

AW: EXE-Größe
 
Scheint als wenn die Resourcen zu den Daten gehören.

Die Dateigröße der EXE ist jetzt nur noch 12 MB. Ich bin zufrieden.

CCRDude 27. Jul 2011 15:15

AW: EXE-Größe
 
Solltest Du etwa madExcept verwenden, schaltet das die Debug-Infos immer wieder ein und ignoriert auch die Build Configurations unter DXE, so daß auch Release-Daten plötzlich riesig erscheinen.

himitsu 27. Jul 2011 15:17

AW: EXE-Größe
 
Zitat:

Zitat von CCRDude (Beitrag 1113854)
Solltest Du etwa madExcept verwenden, ...

Das ist also genauso ein "Mist", wie im EurekaLog
oder DevExpress, welches gerne mal seine ganzen SkinUnits überall mit einträgt, obwohl sie einmal ausreichen würden, was dann beim Entfernen eines Skins viel Spaß bereitet. :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 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