AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Größe Exe-Datei XE2 -> XE4

Ein Thema von Bernhard Geyer · begonnen am 24. Apr 2013 · letzter Beitrag vom 17. Aug 2014
Antwort Antwort
Seite 1 von 6  1 23     Letzte »    
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#1

Größe Exe-Datei XE2 -> XE4

  Alt 24. Apr 2013, 14:27
Hab jetzt mein erstes Programm mit XE4 kompiliert.
Und die Exegröße ist wieder stark gestiegen:

D6 - 787 kByte
XE2 - 3170 kByte
XE4 - 4282 kByte.

Welches sind die Optionen mit denen man die Exegröße halbwegs verkleinern kann.
Exe-Packer ist keine Option.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Größe Exe-Datei XE2 -> XE4

  Alt 24. Apr 2013, 14:36
Hab jetzt mein erstes Programm mit XE4 kompiliert.
Und die Exegröße ist wieder stark gestiegen:

D6 - 787 kByte
XE2 - 3170 kByte
XE4 - 4282 kByte.

Welches sind die Optionen mit denen man die Exegröße halbwegs verkleinern kann.
Exe-Packer ist keine Option.
Bitte die Compiler-Optionen dabei schreiben
Debug oder Release
Mit Debug-DCU oder nicht
Mit erweitertem RTTI oder nicht
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Größe Exe-Datei XE2 -> XE4

  Alt 24. Apr 2013, 14:39
Aber warum sollte es von XE2 auf XE4 steigen? Dinge wie ARC stecken doch angeblich nur im ARM-Compiler?

Oder vielleicht ganz versteckt auch schon im x86-Compiler, wer weiß
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Größe Exe-Datei XE2 -> XE4

  Alt 24. Apr 2013, 14:46
Aber warum sollte es von XE2 auf XE4 steigen? Dinge wie ARC stecken doch angeblich nur im ARM-Compiler?

Oder vielleicht ganz versteckt auch schon im x86-Compiler, wer weiß
Wenn z.B. die SysUtils um ein paar Funktionen erweitert wurde dann wird die komplette (größere) SysUtils.dcu in dein Projekt compiliert. Rein rechnerisch wird es dadurch nicht kleiner.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Größe Exe-Datei XE2 -> XE4

  Alt 24. Apr 2013, 14:47
Bitte die Compiler-Optionen dabei schreiben
Debug oder Release
Mit Debug-DCU oder nicht
Mit erweitertem RTTI oder nicht
Der zuwachs D6 -> XE2 ist mir klar.

Es geht primär um die XE4-Zuwachs da ich hier das XE2-Projekt genommen habe und somit die gleichen Optionen wirken.
Ich will erstmal wissen welche Optione überhaupt hier den Zuwachs beeinflussen können damit ich mal damit herum spielen kann.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Größe Exe-Datei XE2 -> XE4

  Alt 24. Apr 2013, 14:50
Welches sind die Optionen mit denen man die Exegröße halbwegs verkleinern kann.
Ich verwende da die folgenden Zeilen für eine Release-Konfiguration:

Delphi-Quellcode:
// nur benoetigte Typen einbinden (XE3-Standard == off)
{$STRONGLINKTYPES OFF}

// nur aufgerufene Methoden einbinden (XE3-Standard == off)
{$WEAKLINKRTTI ON}

// keine RTTI-informationen generieren
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
Ein wenig Größer wird's hier auch. Unter XE3 wird mir bei einem meiner Win32-Projekte eine Dateigröße von 2377 KByte generiert, die selben Sourcen kompilieren unter XE4 zu einer Größe von 2438 KByte.

ARC selbst steckt nicht nur angeblich, sondern tatsächlich nur im ARC-Compiler. Aber natürlich wird die Laufzeitbibliothek mit den Versionen geändert und ggf. wird's dann halt auch mal größer.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Größe Exe-Datei XE2 -> XE4

  Alt 24. Apr 2013, 14:56
Autsch. War viel einfacher.
Hatte es versehentlich für x64 Compiliert. Da darf es natürlich wachsen.

Als XE4-x32-Version ist es fast 1MB kleiner als die XE2-Version.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
UliBru

Registriert seit: 10. Mai 2010
155 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Größe Exe-Datei XE2 -> XE4

  Alt 24. Apr 2013, 15:53
Ich verwende da die folgenden Zeilen für eine Release-Konfiguration:
Delphi-Quellcode:
// nur benoetigte Typen einbinden (XE3-Standard == off)
{$STRONGLINKTYPES OFF}

// nur aufgerufene Methoden einbinden (XE3-Standard == off)
{$WEAKLINKRTTI ON}

// keine RTTI-informationen generieren
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}

Macht es also nicht generell Sinn, gleich in die dpr-Projektdatei reinzuschreiben ?
Delphi-Quellcode:
{$IFNDEF DEBUG}

// nur benoetigte Typen einbinden (XE3-Standard == off)
{$STRONGLINKTYPES OFF}

// nur aufgerufene Methoden einbinden (XE3-Standard == off)
{$WEAKLINKRTTI ON}

// keine RTTI-informationen generieren
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}

{$ENDIF}
Oder andersrum gefragt, wann braucht man eigentlich die RTTI für ein normales Programm bzw. wann gibt es mit o.g. Code Probleme?
Er wollte so richtig in Delphi einsteigen. Nun steckt er ganz tief drin ...
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Größe Exe-Datei XE2 -> XE4

  Alt 24. Apr 2013, 16:17
Die RTTI-Infos benötigst Du genau dann, wenn Du zur Laufzeit dynamisch auf Deine Objekte zugreifen möchtest. Wenn Du also z.B. wissen möchtest, ob Dein Objekt "Kunde" eine Eigenschaft mit dem Namen "Nummer" hat und von welchem Typ sie ist. Es gibt eine Vielzahl an Verwendungsmöglichkeiten (siehe auch Stichwort "Reflection") - aber bei Weitem nicht alle Programme benötigen diese Möglichkeiten.

Der Moment, in dem Du Dich fragst, wozu das gut ist, sollte schon ein hinreichendes Indiz dafür sein, dass Du es nicht verwendest, denn sonst wüsstest Du es. (Stark verkürzte Aussage, ich weiß ...)

Diese Dynamik bringt ein weiteres Problem: Du könntest eine Methode über ihren Namen aufrufen. Den Namen legst Du in einen String und im Extremfall lässt Du diesen String vom Anwender ausfüllen. Der Compiler kann daher unmöglich wissen, welche Methode eventuell zur Laufzeit benötigt werden könnte und hat keine andere Wahl, als alle Methoden in die EXE zu schubsen - denn theoretisch könnten sie mittels RTTI aufgerufen werden. Wenn Du aber weisst, dass Du das nicht machst, dann kannst Du den Compiler anweisen, dass er ausschliesslich die Methoden in die EXE schreiben soll, die per Code festverdrahtet aufgerufen werden. Das macht die EXE auch noch mal ein gutes Stück kleiner.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Größe Exe-Datei XE2 -> XE4

  Alt 24. Apr 2013, 16:28
Wenn z.B. die SysUtils um ein paar Funktionen erweitert wurde dann wird die komplette (größere) SysUtils.dcu in dein Projekt compiliert. Rein rechnerisch wird es dadurch nicht kleiner.
War da nicht mal was mit "nur was benötigt wird wird auch compiliert"?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 6  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 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