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
Daniel
(Co-Admin)

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

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 Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.040 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

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

  Alt 24. Apr 2013, 18:16
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ß ...)
Da möchte ich mal dezent widersprechen - ich weiß nicht, ob jedem direkt klar ist, dass LiveBindings nur mit RTTI funktionieren.

Wenn eine DCU vorliegt, dann wird die nicht mehr compiliert

PS: Und es ist immer wieder schön zu sehen, wenn einige Packages nur im Debug-Modus erstellt werden. Das geht dann auch so in das Programm rein, egal ob Release oder nicht
Verwechsel hier nicht Compilereinstellungen (Release oder Debug) mit dem entfernen von ungenutztem Code durch den Linker.

Kompiliert wird immer alles, was im Projekt vorhanden ist - sofern der Code vorhanden (leicht zu testen, indem du in eine Methode, die niemals aufgerufen wird, einen Compilefehler einbaust). Allerdings entfernt Linker danach dann soweit möglich das, was nicht benutzt wird.

Aus diesem Grunde muss man sich manchmal mit kleinen Tricks behelfen, dass eine Klasse drin bleibt (indem man sie z.b. im initialization Part referenziert), wenn sie nämlich nur über RTTI anspricht.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#3

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

  Alt 24. Apr 2013, 19:19
Mit StripReloc kann man 32bit Executables noch einige Prozent verkleinern indem die unnötige Relocation-Tabelle entfernt wird.
  Mit Zitat antworten Zitat
UliBru

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

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

  Alt 25. Apr 2013, 08:35
Die RTTI-Infos benötigst Du genau dann, wenn Du zur Laufzeit dynamisch auf Deine Objekte zugreifen möchtest.
...
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ß ...)
Ich weiss für mich in diesem Sinn wohl, dass ich da selbst keine RTTI-Info verwende. Ich weiss aber nicht, ob da nicht in einer der verwendeten Bibliotheken vielleicht jemand davon Gebrauch macht. Kann man das feststellen?

Grüsse
Uli
Er wollte so richtig in Delphi einsteigen. Nun steckt er ganz tief drin ...
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

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

  Alt 25. Apr 2013, 09:30
Ich weiss für mich in diesem Sinn wohl, dass ich da selbst keine RTTI-Info verwende. Ich weiss aber nicht, ob da nicht in einer der verwendeten Bibliotheken vielleicht jemand davon Gebrauch macht. Kann man das feststellen?
Die Basis-RTTI ist zwingend nötig. Sonst könnte die Exe die Formulare aus den dfm's nicht mehr herstellen.

Bei der erweiterten RTTI wird es darauf ankommen welche Minimale Delphi-Version sie unterstützt. Falls D7 dabei ist wird sie nicht benötigt.
Ansonsten mal den Hersteller fragen. Dieser sollte über IFOPT-Abfraggen entsprechende Compilerfehler erzeugen falls er sie benötigt aber nicht vorhanden sind.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Der schöne Günther

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

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

  Alt 16. Mai 2013, 13:59
Gerade XE4 installiert, das gleiche Projekt ist (Debug-Fassung) ist von XE2 auf XE4 von 8,44 auf 11,8MB gewachsen. Nicht dass es mich stören würde, aber schon heftig...
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.040 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

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

  Alt 16. Mai 2013, 17:05
Die Benutzung von Generics in der RTL (glaube ab XE3) äußert sich nunmal in einer größeren Binary.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von MEissing
MEissing

Registriert seit: 19. Jan 2005
Ort: Egelsbach
1.384 Beiträge
 
Delphi 12 Athens
 
#8

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

  Alt 16. Mai 2013, 19:02
http://blogs.embarcadero.com/matthia...13/04/26/38698
Matthias Eißing
cu://Matthias.Eißing.de [Embarcadero]
Kein Support per PN
  Mit Zitat antworten Zitat
Der schöne Günther

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

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

  Alt 16. Mai 2013, 19:13
Danke.

Aber wie gesagt, mich stört es nicht. Ich bin nur neugierig, was sich denn von XE2 auf XE4 in einer reinen Win32-Anwendung ohne FM geändert haben könnte. Was sollte sich denn bei den Generics noch geändert haben?
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.040 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

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

  Alt 17. Mai 2013, 00:25
Zitat von Matthias Eissing:
Weiß man nicht, was RTTI ist, kann man das auch ausschalten.
Falsch - genau das Gegenteil ist der Fall. Man muss nämlich sehr genau wissen, was RTTI ist, und ob irgendein Code in der Anwendung diese benötigt.
Inzwischen wird nämlich in vielen unterschiedlichen Teilen diese oft genutzt - einige Beispiele wären: Serialisierung, ORM, DI und *trommenwirbel* LiveBindings.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort


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:14 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 by Thomas Breitkreuz