Avr
26
|
Dès que l’on crée une application avec Delphi, qui contient une fiche, même si celle-ci ne fait rien de plus, on obtient une application d’une certaine taille…

Delphi
Les différentes options et/ou directives que l’on choisit peuvent influencer la taille… J’ai testé celles-ci qui ont été portées à mon attention par Matthias :
J’ai ajouté ces directives à mon projet ainsi :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | program Project1; {$WEAKLINKRTTI ON} {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])} uses Vcl.Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} begin Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TForm1, Form1); {$IFDEF DEBUG} ReportMemoryLeaksOnShutdown := True; {$ENDIF DEBUG} Application.Run; end. |
Voici les différentes tailles constatées en compilant depuis Delphi XE4, une application 32 bits :
VCL | Debug | 10698 Ko | |
---|---|---|---|
Release | 2275 Ko | ||
Release sans RTTI | 1902 Ko | ||
FMX | Debug | ![]() |
![]() |
Release | ![]() |
![]() |
|
Release sans RTTI | ![]() |
![]() |
Comme vous pouvez le constater, si vous n’utilisez pas l’unité System.Rtti
, vous pouvez facilement gagner de la place en utilisant ainsi ces deux directives . Cela fonctionne bien sûr également en 64 bits même si je n’ai pas mis les valeurs dans le tableau ci-dessus.
De plus, sur un projet vide, la seconde directive ne change rien. Je la conserve néanmoins pour des projets plus conséquents, avec du code, où celle-ci s’avère réellement utile.
Vous remarquerez également que j’ai barré une taille pour OS X ; en effet, la première directive n’est pas compatible avec ce système d’exploitation. Par conséquent, j’utilise concrètement ceci dans mes projets FireMonkey :
{$WEAKLINKRTTI ON}
{$ENDIF MSWINDOWS}
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
Vous pouvez ajouter et sélectionner les configurations depuis le Gestionnaire de projets :
Encore merci à Matthias pour cette astuce intéressante !
Article mis à jour : en faisant quelques tests complémentaires avec Thierry, nous avons remarqué que la directive
{$WEAKLINKRTTI ON}
fait planter l’application sous.
Pings: Liens de l’épisode 17 de la saison 2 | Le Dev du Jeudi