AW: Debug und Release liefert nahezu gleichgroße Exe-Dateien
Das wird vermutlich nicht den großen Unterschied ausmachen...
Zitat:
|
AW: Debug und Release liefert nahezu gleichgroße Exe-Dateien
Zitat:
|
AW: Debug und Release liefert nahezu gleichgroße Exe-Dateien
Das RELEASE-Define gibt auch erst seit den Delphi-Versionen mit dproj-Datei.
Der eigentliche Compilerdirektive ist $D+ |
AW: Debug und Release liefert nahezu gleichgroße Exe-Dateien
Ich habe jetzt mal meine Projektdatei neu angelegt, die Konfiguration habe ich ganz bewusst mit den Defaultwerten übernommen. Ich habe danach lediglich die Uses und das erzeugen der Forms in die neue Dpr-Datei umkopiert.
Zwar hat sich dadurch die Größe meiner Release-EXE nicht verändert 27 MB, aber die Debug-EXE ist jetzt knapp 72 MB groß :shock: Wenn ich MadExcept rausnehme sind es ungefär 2 MB weniger. Hab grad noch mal die D7-Version rausgekramt: Knapp 15 MB Einiges wird sicherlich den Fremdkomponente geschuldet sein, die in ihren neueren Version sicherlich auch einen erweiterten Funktionsumfang mit sich bringen. Auch Änderungen in den Units von Delphi wird ein Teil zum Opfer fallen. Aber 15 (incl. Debug-Informationen) zu 27 ohne erscheint mir sehr viel. Und die 72 der Debug-EXE....wow, damit hätte ich nicht gerechnet. |
AW: Debug und Release liefert nahezu gleichgroße Exe-Dateien
Du musst auch die Einstellungen im Bereich Linker anschauen.
Da gibt's einige Einstellungen die eine Exe sehr viel größer machen (aber auch nötig sind damit z.B. AQTime Laufzeitmessungen durchführen kann) und bei neu angelegten Projekten in der Debug-Konfiguration standardmäßig angewählt sind. Diese großen Unterschied bekommst du auch unter alten Delphis hin wenn du die TD32-Debug-Infos aktivierst. |
AW: Debug und Release liefert nahezu gleichgroße Exe-Dateien
Das einzige, was dort aktiviert ist (wie gesagt, Default und nicht von mir geändert) ist Debug-Informationen und das solle ja so sein. Beim Map-Datei steht detailliert, aber das ist ja sowieso eine separate Datei.
Was ich noch ändern könnte wäre unter Compilieren - Debug-Informationen. Dort steht Debug-Informationen, ich könnte aber auf "begrenzte Debug-Information" umschalten. Aber es ist ja Default und ich weiß nicht, welche Einschränkungen ich mir damit beim Debuggen einhandele. Ich meine, wenn die Debug-EXE so groß sein soll/muss, dann ist es halt so. Ist ja nicht so, dass es mich wesentlich stört. Ich war nur etwas erschrocken. Meine Frage im Eröffnungsthread zielt ja eigentlich darauf ab, dass ich nicht eine EXE-Datei weitergeben will, die mehr Daten enthalten (also Debug-Informationen) als für die Ausführung beim Anwender notwendig ist. Durch das erzeugen der neuen Projektdatei sieht es für mich jedoch eher so aus, dass in meiner ursprünglichen Debug-EXE keine Debug-Informationen drin waren, jedoch das Debugging ohne Probleme funktionierte. Ich hätte durch das Neuerzeugen der Projektdatei erwartet, dass die Release-EXE kleiner wird, und die Debug-EXE so bleibt. Stattdessen ist es umgekehrt. Und das hat mich gewundert. |
AW: Debug und Release liefert nahezu gleichgroße Exe-Dateien
Zitat:
|
AW: Debug und Release liefert nahezu gleichgroße Exe-Dateien
Wie schon geschrieben gibt es mehrer Einstellungen für Debug-Infos.
Zum Debuggen in der IDE brauchst du nur die Debug-Einstellung auf die Compiler-Seite. Dann wird die Exe nur geringfügig größer. Den Schalter auf der Linker-Seite brauchst du z.B. um mit AQTime zu arbeiten. Und dieser Schalter macht (wie auch schon zu Delphi 6-Zeiten die Exe sehr viel größer). Da hat sich nichts grundlegendes in den letzten 20 Jahren geändert. Und wenn deine alte Debug-Exe klein war dann hatte Sie nur auf der Compilerseite den Schalter gesetzt aber nicht auf Linker-Seite. Und deine Release-Exe bekommst du etwas kleiner mit {$WEAKLINKRTTI ON} in der dpr-Datei. Dann darfst du aber nicht auf automatisch erzeugte erweiterte RTTI-Infos setzen in deinem Quellcode. |
AW: Debug und Release liefert nahezu gleichgroße Exe-Dateien
Exe Größe Hin oder Her ich meine das in Delphi Kompilierte Dateien unnötig aufgebläht sind.
Ich Kompiliere eine DLL.. Jetzt frage ich mich ernsthaft was haben da ein Icon\IconGroup, Cursor\CursorGroup und andere dinge zu suchen? Die werden weder benötigt noch erfüllen sie irgendeinen zweck und sind nicht von Nöten damit meine DLL funktioniert. Was soll das also? Und warum kann man diese NICHT benötigen Dinge aus dem Kompilat nicht ausschließen. EDIT: Zudem sind die Package Informationen für mich ein Ansatz um das Kompilat zu dekompilieren. Warum muss diese öffentlich in einer DLL durch das Kompilieren mit eingebunden werden. gruss |
AW: Debug und Release liefert nahezu gleichgroße Exe-Dateien
Das liegt daran, dass der Compiler da nichts optimieren kann, da er nicht wissen kann ob eine Ressource benötigt wird, also wird alles einkompiliert, was in irgendeiner Unit inkludiert wurde.
Bei Klassen und Funktionen ist das was Anderes ... wird die nicht verwendet, sie sind nicht public (im Interface) und es handelt sich nicht um ein Package, dann kann sie einfach vom Linker weggelassen werden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:20 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