Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Delphi 12 Größe der Exe (https://www.delphipraxis.net/214565-delphi-12-groesse-der-exe.html)

Starsky911 31. Jan 2024 15:20

Delphi-Version: 5

Delphi 12 Größe der Exe
 
Ich habe einen VCL-Win64 RestServer von Delphi11 auf Delphi12 migriert.
Dabei hat die Größe der Exe erheblich zugenommen.

Gegeüberstellung:

Delphi 11
===========
Release
- DCU 8,45MB
- EXE 21,3MB

Debug
- DCU 9,48MB
- EXE 21,4

Delphi12
===========
Release
- DCU 10,2
- EXE 34,7MB
Debug
- DCU 10,2
- EXE 34,9MB

Das die Exe bei einem neuen Delphi-Releases etwas größer wird ist ja normal
aber dieser deutliche Zuwachs kommt mir komisch vor!
Gibt es da irgendwelche Compiler Einstellungen?

Vielen Dank im Voraus.
Starsky
Gibt es da bei Delphi12 eine Compiler Einstellung um die Exe

dummzeuch 31. Jan 2024 15:25

AW: Delphi 12 Größe der Exe
 
Ich würde mal auf Debug Symbole tippen. Unter Linker-Einstellungen.

himitsu 31. Jan 2024 15:40

AW: Delphi 12 Größe der Exe
 
Jupp, die DebugSymbole sind schon extrem.

Du kannst ja interessehalber mal auf "externe TDS" umstellen.

Starsky911 1. Feb 2024 13:31

AW: Delphi 12 Größe der Exe
 
Der Übeltäter ist ausgemacht, es liegt an "HTML Office Library"
In der Version 4.6 wird die Exe um 2MB aber in der Version 4.8 um 15MB vergrößert.
Die DCU's sind in Summe nur etwas größer.

Kann es sein das in dem Sourcen der neueren Komponente irgendwelche Compiler Direktiven falsch gesetzt wurden?

Sinspin 1. Feb 2024 14:48

AW: Delphi 12 Größe der Exe
 
Vermutlich sind da Ressourcen mit gespeichert die mehr Platz brauchen. Eingelagerte dll sind bei solchen Komponenten nicht selten.
Die Compilerschalter wirken auch auf die bereits übersetzten Module und es wird nur das übernommen was gebraucht wird (falls es vorhanden ist)
Bei DevExpress ging das in den letzten Jahren auch immer wieder höher. Zum Glück ist nun viel in den externen Skin Dateien.

Starsky911 1. Feb 2024 15:07

AW: Delphi 12 Größe der Exe
 
Zitat:

Zitat von Sinspin (Beitrag 1532888)
Vermutlich sind da Ressourcen mit gespeichert die mehr Platz brauchen. Eingelagerte dll sind bei solchen Komponenten nicht selten.
Die Compilerschalter wirken auch auf die bereits übersetzten Module und es wird nur das übernommen was gebraucht wird (falls es vorhanden ist)
Bei DevExpress ging das in den letzten Jahren auch immer wieder höher. Zum Glück ist nun viel in den externen Skin Dateien.

Sollten sich nicht dann auch die DCU's sich entsprechend vergrößern?

himitsu 1. Feb 2024 15:15

AW: Delphi 12 Größe der Exe
 
Ressourcen liegen nicht in der DCU. (weder .RES noch .DFM)

Deswegen https://quality.embarcadero.com/browse/RSP-42284

dummzeuch 1. Feb 2024 15:45

AW: Delphi 12 Größe der Exe
 
Zitat:

Zitat von Sinspin (Beitrag 1532888)
Die Compilerschalter wirken auch auf die bereits übersetzten Module

Nein, tun sie nicht. Compilerschalter wirken sich nur auf die Erstellung von DCUs aus den Sourcen aus. Wenn man bereits vorübersetzte DCUs einbindet, haben Compilerschalter auf diese DUDs keine Wirkung.

himitsu 1. Feb 2024 16:47

AW: Delphi 12 Größe der Exe
 
Also die Compilerschalter, welche den Code (PAS) kompilieren.

Alles was auf's Linken wirk, oder erst zur Laufzeit, das ist davon nicht betroffen.
z.B. {$M ...} und {$R ...}

In der DCU liegt dann aber der schon kompilierte und optimierte Code, eventuell mit oder ohne Hilfscode (Überlauf-/Indexprüfung, Assertions usw.), welcher nachfolgend nicht mehr verändert wird.

Aber z.B. die DebugInfos:
* es gibt einen/mehrere Schalter, welche die Generierung dieser Infos beeinflussen (also was in der DCU landet)
* aber es gibt auch Schalter/Optionen, welche erst das Linken beeinflussen (also ob die eventuell generierten Infos dann wirklich in der EXE/DLL eingebunden bzw. mitgegeben werden)

Sinspin 1. Feb 2024 17:02

AW: Delphi 12 Größe der Exe
 
Zitat:

Zitat von dummzeuch (Beitrag 1532895)
Zitat:

Zitat von Sinspin (Beitrag 1532888)
Die Compilerschalter wirken auch auf die bereits übersetzten Module

Nein, tun sie nicht. Compilerschalter wirken sich nur auf die Erstellung von DCUs aus den Sourcen aus. Wenn man bereits vorübersetzte DCUs einbindet, haben Compilerschalter auf diese DUDs keine Wirkung.

:gruebel:
Guckst du :
Zitat:

Zitat von himitsu (Beitrag 1532903)
Also die Compilerschalter, welche den Code (PAS) kompilieren.

Alles was auf's Linken wirk, oder erst zur Laufzeit, das ist davon nicht betroffen.
z.B. {$M ...} und {$R ...}

In der DCU liegt dann aber der schon kompilierte und optimierte Code, eventuell mit oder ohne Hilfscode (Überlauf-/Indexprüfung, Assertions usw.), welcher nachfolgend nicht mehr verändert wird.

Aber z.B. die DebugInfos:
* es gibt einen/mehrere Schalter, welche die Generierung dieser Infos beeinflussen (also was in der DCU landet)
* aber es gibt auch Schalter, welche erst das Linken beeinflussen (also ob die eventuell generierten Infos dann wirklich in der EXE/DLL eingebunden bzw. mitgegeben werden)

:warn:


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