![]() |
Größe der *.exe
Hallo, habe ein altes Progrmm von vor gut zehn Jahren mit Delphi 11 überarbeitet. Nach dem Compilieren hat die exe rund 2,5 MB. Das ursprüngliche Programm mit Delphi 6 programmiert und compiliert hatte 750 KB. Wie kommt es, daß die exe nun plötzlich so viel größer ist und kann man das ändern?
Danke schon mal. |
AW: Größe der *.exe
2-5 MB für eine VCL-Anwendung (10-15 MB mit Debuginfos)
und knapp unter 1 MB für eine Consolen-Anwendung sind inzwischen eigentlich normal. Aber heute habe ich auch 'nen Terrabyte an HDD (keine 30 MB mehr) sowie 16 oder gar 64 GB RAM (nicht mehr nur 1 MB) und 'nen Gigabit im Download (keine 56kbit). Als Release kompilieren (ohne Debug-Infos) ... alternativ "mit externen TDS" für Debug Dann kann man noch bei der RTTI so Einiges abschalten, aber nur was deine eigenen Units/Klassen betrifft. Standardmäßig enthält die erweiterte RTTI jetzt auch PRIVATE, "falls" man auf Eigentschaften/Funktionen via RTTI zugreifen wöllte. ![]() Ansonsten ist inzwischen auch viel mehr in der RTL und VCL drin, was auch noch dazu kommt. Würde Vieles nicht in er INITIALIZATION initialisiert, sondern in CLASS-CONSTRUCTOR, dann könnte der Linker vieles weglassen, was nicht benutzt wird. (steht es aber in INITIALIZATION drin, dann wird es benutzt, selbst wenn es "eigentlich" nicht benutzt wird) Leider können ungenutzte Ressourcen vom Linker nicht entfernt werden, da er nicht weiß ob sie genutzt werden. (es ist leider nicht möglich eine Ressource z.B. an eine Klasse oder Methode zu hängen, um die Einbindung davon abhängig zu machen, ob der Teil gelinkt wurde) Wurde eine Unit sinnlos eingebunden und dann nicht benötigt, dann ist ihr Zeugs (INITIALIZATION und Ressourcen) dennoch mit drin und wiederum Das davon eingebundener Units usw. Ich hab grade eben eine winzige Test-EXE erstellt, mit effektiv 20 Zeilen Code, und auf der Form 3 Panels, ein Memo und zwei Drag&Drop-Komponenten. Delphi 11 -> 126 MB mit DebugInfos und 40 MB ohne. (leider enorm viele Abhängigkeiten, welche aber eigentlich nicht benutzt werden) |
AW: Größe der *.exe
Zitat:
Das ist trotz krasser Frameworks nicht mehr sooo viel größer geworden. Wobei, da noch gut 300 MB in dll's und skin files drauf kommen die ich mit ausliefern muss, aber nicht von uns erstellt werden. Wenn ich das mit meiner ersten großen Eigenentwicklung, in TPX7 vergleiche (118KB) .... auf der Diskette war noch viel Platz :lol: |
AW: Größe der *.exe
Zitat:
|
AW: Größe der *.exe
Der Hauptgrund für die deulich grösseren Exe's liegt an den RTTI Daten. Leider lassen sich diese nicht vollumfänglich auschalten, wenn man keinen Bedarf dafür hat. Bei eigenen Units kann man folgenden Definition am Anfang in den Sourecode reinschreiben, wodurch dann für diese Unit keine RTTI Daten erzeugt werden. Da man das aber für die Delphi Basis-DCU's nicht machen kann, bringt das nur relativ wenig.
Delphi-Quellcode:
Hatte da mal bei meiner ca. 8 MB Exe bei allen Komponenten, die als Sourceversion besitze und von denen ich weiss, dass da kein RTTI benötigt wird, alle Units entsprechend angepasst und damit immerhin ca. 1.5 MB eingespart.
Unit ABC
{$WEAKLINKRTTI ON} {$RTTI EXPLICIT METHODS([]) FIELDS([]) PROPERTIES([])} .... |
AW: Größe der *.exe
Zitat:
|
AW: Größe der *.exe
Zitat:
|
AW: Größe der *.exe
Zitat:
|
AW: Größe der *.exe
Vielen Dank für die Antworten. Jetzt muß ich nur noch herausfinden, wo man beim Compilieren die Häkchen wegnehmen muß. Eigentlich programmiere ich schon seit vielen Jahren nicht mehr, mußte nur einen Fehler in einem alten Programm beheben...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 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