Cuál es el impacto (si lo hubiere) ¿Delphi 2009 el interruptor de la Unicode(/UTF16) sobre el tamaño del ejecutable y la huella en la memoria?

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

  •  01-07-2019
  •  | 
  •  

Pregunta

Aquí está uno de los "Ninguna pregunta es demasiado estúpida" departamento:

Bueno, como el tema dice:Hay un impacto?Si es así, ¿cuánto?Todos los literales de cadena que tengo en mi código y en mi DFM recursos ahora tomar hasta dos veces más espacio en el interior de los binarios compilados?Lo que sobre el uso de memoria en tiempo de ejecución de aplicaciones compiladas?Estarán todas las variables de cadena ahora tomar hasta dos veces la cantidad de RAM?Debería siquiera se moleste?

Recuerdo que algo parecido a esto se le preguntó durante una de las primeras pre-lanzamiento webcasts pero no puedo recordar la respuesta.Y como el juicio está a solo 14 días no voy a intentar de mí antes de que las bibliotecas de terceros necesito han sido actualizados (se supone que en un mes aproximadamente).

¿Fue útil?

Solución

D2009 usa UTF-16 para el tipo de cadena por defecto, aunque se puede hacer de variables UTF-8 si es necesario.

Jan Goyvaerts se analiza el tamaño y la velocidad de equilibrio en un buen blog.

Los literales de cadena en DFMs han sido UTF-8, ya que al menos D7.Por lo tanto, no habrá aumento en el tamaño debido a las cadenas en DFMs con D2009.

Otros consejos

Ahora he conseguido por fin en mis manos en Delphi 2009 y después de hacer los ajustes necesarios para que mi proyecto ahora compila y se ejecuta bien.:)

Para obtener resultados rápidamente, yo al principio tenía para comentar un poco más compleja módulo de la aplicación, de manera que no es 100% comparables, pero ya parece lo suficientemente seguro como para predecir que a pesar de una importante cantidad de literales de cadena en nuestro código fuente (exceso de depurar los mensajes de registro) el tamaño del binario compilado con Delphi 2009 probablemente será aproximadamente el mismo que antes - si, en realidad, no menos!

Me pregunto, ¿el compilador de Delphi de realizar cualquier tipo de compresión en los archivos binarios o al menos de sus recursos secciones de alguna manera?Realmente me habría esperado que el cambio UTF-16 literales de cadena para tener un mayor impacto en esta aplicación particular.Son los literales realmente almacena como (sin comprimir) UTF-16 en el interior del binario?

No he tenido tiempo para investigar las diferencias en la huella de la memoria todavía.

EDITAR: No directamente Unicode-relacionadas, pero definitivamente relacionados:Andreas Hausladen ha publicado recientemente un interesante poco acerca de la (importante) el impacto de la {$STRINGCHECKS} opción del compilador (por CIERTO:activado por defecto) en un archivo ejecutable compilado tamaño: http://andy.jgknet.de/blog/?p=487

He estado esperando una Unicode VCL durante muchos años, finalmente lo vemos.No creo que la mayoría de las aplicaciones necesitan preocuparse acerca de los problemas de tamaño, ya que no tienen de que muchos de los literales de cadena de todos modos o almacenar enormes cantidades de datos en-memoria.

Los problemas de usabilidad son más de peso para justificar Unicode uso tanto como sea posible.

Si algún desarrollador quiere crear un pequeño exe, se puede de la mano de optimizar el uso de AnsiString (si i18n no es un problema).

No he utilizado Delphi en años, pero probablemente depende de lo que la codificación Unicode que utilizan.UTF8 será exactamente el mismo para el conjunto de caracteres ASCII (sólo se utiliza más de un byte cuando usted consigue en los caracteres exóticos).UTF16 podría ser un poco hinchado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top