Question

J'ai la même version de Delphi, BPLS, composants, tout. Et pourtant, sur trois machines, les exécutables résultants sont de taille différente. Quoi d'autre peut influencer la taille de l'exe?

Sur ma machine, j'ai cette taille (Vista 6.0.6001):

4.547.584 bytes

Sur la machine de mon collègue, il obtient (XP 5.1.2600 SP3):

4.530.688 bytes

Dans un troisième collègue, il obtient: (XP 5.1.2600 SP2)

4.527.104 bytes

La version du système d'exploitation influence-t-elle la taille de l'exe compilé?

Était-ce utile?

La solution

Il semblerait que ce soit des différences de configuration, ou si vous avez peut-être différentes versions de composants installées entre les trois ordinateurs. Je suggérerais de créer un formulaire vierge et de l’essayer tous les 3 après avoir vérifié que les paramètres de construction sont les mêmes. Si tel est le cas, ajoutez des composants tiers jusqu'à trouver celui qui est différent.

De plus, vous pouvez avoir une version différente de Delphi (version majeure ou mineure / mise à jour).

Autres conseils

Les différences proviennent presque certainement de réglages différents du compilateur entre les machines. Par exemple, l'activation ou la désactivation de la vérification de plage modifiera légèrement la taille résultante de l'exécutable.

L’un des avantages des versions plus récentes de Delphi est l’utilisation de MSBuild, qui permet de s’assurer que les paramètres de chaque génération sont les mêmes.

Hmmm ...

SizeOf (XPSP2.exe) < SizeOf (XPSP3.exe) & Lt; SizeOf (Vista.exe)

Conclusion:

Plus la version de Windows est récente, plus " remplisseur " est inséré au hasard pour ajouter de la crédibilité. Si cela prend plus de place, il doit être plus puissant, et il a probablement été codé par les meilleurs ingénieurs du monde! :-) (désolé - je travaille chez Microsoft depuis trop longtemps!)

Avec Delphi / BCB, quelques facteurs peuvent influer sur la taille:

Votre configuration de construction : le mode de publication n'est pas lié à la section de débogage dans le fichier EXE (par défaut), il est donc plus petit. vous pouvez également bénéficier de l'optimisation du code.

Liaison avec RTL dynamique : si cette option est activée, votre fichier EXE sera plus petit mais vous aurez besoin de bibliothèques externes disponibles.

Création à l'aide de packages d'exécution : si cette option est activée, vous créez un lien dynamique vers les packages d'exécution que vous utilisez au lieu de les associer directement à votre fichier EXE. Cela peut entraîner les plus grandes différences de taille.

Il y a d'autres facteurs, mais ce qui précède a tendance à être les principaux que je rencontre.

IIRC, une recompilation après avoir effectué des modifications mineures peut également laisser cruellement planer - un des effets secondaires du compilateur intelligent, je suppose:}

En fait, c'est un problème qui existe depuis assez longtemps. Voir

Contrôle de la qualité CodeGear

groupes de discussion Borland Delphi

Récente discussion à ce sujet sur Groupes de discussion Delphi (vue http).

Cela n’a absolument rien à voir avec les différences d’installations de composants ou quelque chose comme ça; en fait, la dernière référence mentionne quelque chose à voir avec les horodatages qui sont insérés dans l'application à chaque compilation / construction. De plus, si vous construisez et incluez des informations sur la version et que le numéro de compilation est défini sur auto-incrémentation, cela entraînera également des différences binaires.

En fait, c’est beaucoup plus intéressant que.

Même en reconstruisant la même application sur la même machine, plusieurs fois de suite, en ne modifiant absolument PAS la configuration, que ce soit entre les compilations, on obtient des exécutables de tailles légèrement différentes. J'ai construit un projet particulier 10 fois et j'ai obtenu 10 (!) Différentes tailles d'exécutable, une taille différente à chaque fois!

J'ai remarqué que le phénomène ne se produit que sur des projets de taille / complexité suffisante.

Si vous faites cela sur un projet relativement simple, l'exécutable aura la même taille, même s'il restera des différences internes (si vous effectuez une comparaison binaire). Je n’ai pas le temps d’enquêter là-dessus pour le moment, mais je suis plutôt curieux.

Notez que le simple fait de compiler, c'est-à-dire de simplement re-lier l'application, ne modifie pas la taille de l'exécutable résultant, mais modifie son contenu (les fichiers binaires générés ne sont pas identiques).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top