Quel impact (le cas échéant) le passage à Unicode (/ UTF16) de Delphi 2009 a-t-il sur la taille de l’exécutable et l’encombrement de la mémoire?

StackOverflow https://stackoverflow.com/questions/82454

  •  01-07-2019
  •  | 
  •  

Question

Voici l'un des "Aucune question n'est trop stupide". département:

Eh bien, comme le dit le sujet: y at-il un impact? Si oui, combien? Est-ce que tous les littéraux de chaîne que j'ai dans mon code et dans mes ressources DFM occuperont désormais deux fois plus d'espace à l'intérieur des fichiers binaires compilés? Qu'en est-il de l'utilisation de la mémoire d'exécution des applications compilées? Est-ce que toutes les variables de chaîne prendront maintenant deux fois plus de RAM? Devrais-je même déranger?

Je me souviens que quelque chose de ce genre avait été demandé lors de l'une des premières webémissions avant la publication, mais je ne me souviens plus de la réponse. Et comme le procès ne dure que 14 jours, je ne le ferai pas moi-même avant que les bibliothèques tierces dont j'ai besoin aient été mises à jour (supposément dans environ un mois).

Était-ce utile?

La solution

D2009 utilise UTF-16 pour le type de chaîne par défaut, bien que vous puissiez créer des variables UTF-8 si vous en avez besoin.

Jan Goyvaerts discute du compromis taille / vitesse dans un bon article de blog.

Les littéraux de chaîne dans les DFM sont au format UTF-8 depuis au moins D7. Par conséquent, il n'y aura pas d'augmentation de taille due aux chaînes dans les DFM avec D2009.

Autres conseils

Je viens enfin de mettre la main sur Delphi 2009 et, après avoir apporté les ajustements nécessaires, mon projet est maintenant compilé et fonctionne parfaitement. :)

Pour obtenir rapidement des résultats, je devais au départ commenter un module légèrement plus complexe de l’application afin qu’elle ne soit pas encore comparable à 100%, mais il semble déjà suffisamment sûr pour le prédire malgré une quantité significative de chaînes de caractères dans notre code source (excessif). messages du journal de débogage), la taille du binaire compilé avec Delphi 2009 sera probablement à peu près identique à celle d’avant, sinon moins!

Je me demande si le compilateur Delphi effectue réellement un type de compression sur les fichiers binaires ou au moins ses sections de ressources de quelque manière que ce soit. J'aurais vraiment pensé que le changement apporté aux littéraux de chaîne UTF-16 aurait un impact plus important dans cette application particulière. Les littéraux sont-ils vraiment stockés en tant que UTF-16 (non compressé) dans le binaire?

Je n'ai pas encore eu le temps d'examiner les différences dans l'empreinte mémoire.

EDIT: Pas directement lié à Unicode, mais bien lié: Andreas Hausladen a récemment publié un article intéressant sur l’impact (significatif) de l’option du compilateur {$ STRINGCHECKS} (/ BTW: activé par défaut) sur la taille de l’exécutable compilé: http://andy.jgknet.de / blog /? p = 487

J'attendais une VCL Unicode depuis trop d'années, enfin nous le voyons. Je ne pense pas que la plupart des applications doivent s'inquiéter des problèmes de taille, car elles ne disposent de toute façon pas de nombreux littéraux de chaîne et ne stockent pas d'énormes quantités de données en mémoire.

Les problèmes d'utilisation sont plus importants pour justifier l'utilisation d'Unicode autant que possible.

Si un développeur souhaite créer un petit exe, il peut optimiser à l'aide de AnsiString (si i18n n'est pas un problème).

Je n'ai pas utilisé Delphi depuis des années, mais cela dépend probablement de l'encodage Unicode utilisé. UTF8 sera exactement le même pour le jeu de caractères ASCII standard (il utilise seulement plus d'un octet lorsque vous entrez dans les caractères exotiques). UTF16 pourrait être un peu gonflé.

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