Delphi-PRAXiS
Seite 7 von 7   « Erste     567

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Wie bekomme ich die exe kleiner? (https://www.delphipraxis.net/203240-wie-bekomme-ich-die-exe-kleiner.html)

TurboMagic 7. Feb 2020 18:37

AW: Wie bekomme ich die exe kleiner?
 
Zitat:

Zitat von Luckie (Beitrag 1456947)
Kann man die RTTI (oder wie heißt das?) eigentlich einfach deaktivieren, wenn man sie nicht benötigt? Und wie viel ändert das an der Größe?

Hallo,

per Unit kannst du zumindest Teile davon auch abschalten. Du kanst dir sogar
raussuchen welche. Icxh weiß nur nicht mehr auswendig wie das Stichwort dazu lautet.
Es gibt aber eine Direktive die man an den Anfang der Unit schreibt.

Grüße
TurboMagic

TurboMagic 7. Feb 2020 18:39

AW: Wie bekomme ich die exe kleiner?
 
Zitat:

Zitat von Stevie (Beitrag 1456954)
Zitat:

Zitat von Luckie (Beitrag 1456947)
Kann man die RTTI (oder wie heißt das?) eigentlich einfach deaktivieren, wenn man sie nicht benötigt? Und wie viel ändert das an der Größe?

RTTI für System.Generics.Collections ausgeschalten, TEnumerable<T>.ToArray virtual abstract gemacht und noch ein paar kleinere Anpassungen in System.Generics.Defaults -> 1.6MB, davon 134KB durch Generics (14 TDictionary<,> und 29 TList<>).

Warum 30 Listen weniger? Ich vergaß: TDictionary<TKey, TValue> hat intern Klassen, die von TEnumerable<TKey> und TEnumerable<TValue> ableiten, somit bekam man pro TDictionary<,> 3 neue TList<> Klassen (für TKey, TValue und TPair<TKey,TValue>) - wären also im besten Fall 42 mal TList<> weniger - einige Kombinationen sind aber noch wirklich als TList<> benutzt - z.B. wenn ein TDictionary als key TClass hat, denn TList<TClass> wird irgendwo benutzt.

Gibt's für diese Ideen schon QP feature requests? ;-)

Stevie 7. Feb 2020 19:07

AW: Wie bekomme ich die exe kleiner?
 
Zitat:

Zitat von TurboMagic (Beitrag 1456961)
Gibt's für diese Ideen schon QP feature requests? ;-)

Nein, ich trage Dinge nicht mehr ein, wo ich von vornherein weiß, dass sie nicht gemacht werden.
- die Änderung für TEnumerable<T>.ToArray hab ich an einen Entwickler kommuniziert und das wird wohl in 10.4 drin sein (10.3.x ging nicht, da breaking change).
- RTTI ausschalten werden sie nicht machen, da dann der ganze JSON und sonstiges jegliches Serialisieren nicht mehr funktioniert.
- die Änderungen in System.Generics.Defaults, die ich gemacht habe sind auch Breaking changes (TComparer<T> und TEqualityComparer<T> auf record geändert, so dass dort weniger unnötiger Code erstellt wird)

himitsu 8. Feb 2020 12:49

AW: Wie bekomme ich die exe kleiner?
 
Wird als Optimierung intern auch der selbe Code verwendet, wenn die Typen quasi kompatibel sind, bzw. wo praktisch der selbe Assembler-Code entsteht?

z.B. TDictionary für Byte, ShortInt, PAnsiChar, Boolean, ByteEnum usw.



Und warum nicht die meiste RTTI aus, wenn sie fast niegendwo verwendet wird?
Die Objekte/Typen, welche Serialisiert werden sollen, da ist es keinerlei großer Aufwand, wenn die Entwickler das dort gezielt aktivieren.

Aber gut, es war auch schonmal witzig per RTTI bissl durch die IDE zu enumerieren, obwohl dort leider doch bei dem Einen oder Anderen die RTTI deaktiviert wurde. :cry:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:46 Uhr.
Seite 7 von 7   « Erste     567

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf