2008-11-11 10 views
8

Tengo la misma versión delphi, bpls, componentes, todo. Y sin embargo, en tres máquinas los ejecutables resultantes son de diferente tamaño. ¿Qué otra cosa puede influir en el tamaño del exe?¿Qué puede influir en el tamaño del ejecutable Delphi?

En mi máquina consigo este tamaño (Vista 6.0.6001):

4.547.584 bytes 

En la máquina de mi colega, que recibe (XP SP3 5.1.2600):

4.530.688 bytes 

En un tercer colleage, se obtiene: (XP SP2 5.1.2600)

4.527.104 bytes 

tiene la versión de OS influencia en el tamaño exe compilado?

+0

¿Grandes diferencias? ¿Puedes dar ejemplos? – vIceBerg

+0

vlceBerg, ejemplos agregados como usted solicitó. –

+0

¿La misma versión del sistema operativo? ¿Mismo SP instalado? Mismo sistema de archivos? – vIceBerg

Respuesta

10

Parecería que se trata de diferencias de configuración, o si tal vez tiene diferentes versiones de componentes instalados entre las tres máquinas. Sugeriría crear un formulario en blanco y probarlo en los 3 después de verificar que la configuración de compilación sea la misma. Si eso es lo mismo, agregue algunos componentes de terceros hasta que encuentre el que sea diferente.

Además, es posible que tenga una versión diferente de Delphi (mayor o menor/versión de actualización).

+0

Thanx Jim. Lo intentaré y publicaré los resultados lo antes posible –

+0

Lo siento, Jim. Incorrecto. Consulte mi publicación para ver los enlaces que explican por qué. –

+0

En realidad Ken, podría ser ambas, pero no estaba al tanto del problema que usted señaló. –

3

Con Delphi/BCB estos son algunos de los factores que pueden influir en el tamaño:

Su configuración de generación: Modo de disparo no se vincula en la sección de depuración en el archivo EXE (por defecto), de modo que sea menor. también puede obtener un impulso de la optimización del código.

Vinculación con Dynamic RTL: Si está habilitado, EXE será más pequeño pero necesitará que las bibliotecas externas estén disponibles.

Building with Runtime Packages: Si está habilitado, enlaza dinámicamente con los paquetes de tiempo de ejecución que utiliza en lugar de vincularlos directamente a su EXE. Esto puede resultar en las diferencias de tamaño más grandes.

Son otros factores, pero los anteriores suelen ser los principales con los que me encuentro.

+0

Steve - esa es una gran respuesta a una pregunta totalmente diferente ;-) – Roddy

7

Las diferencias casi seguramente provienen de diferentes configuraciones de compilador entre las máquinas. Por ejemplo, activar o desactivar Range Checking alterará ligeramente el tamaño resultante del ejecutable.

Una de las cosas buenas de las versiones más recientes de Delphi es el uso de MSBuild, que puede asegurar fácilmente que las configuraciones para cualquier compilación sean las mismas.

+0

Nuestros archivos DPR son los mismos, seguro. La verificación de rango es una opción de proyecto. No puedo ver ninguna opción IDE que pueda interferir en el tamaño del ejecutable resultante. –

1

IIRC, re-compila después de hacer cambios menores también pueden dejar cruft por ahí - fo uno de los efectos secundarios del compilador inteligente, supongo:}

0

En realidad, es mucho más interesante que lo.

Incluso la reconstrucción de la misma aplicación en la misma máquina, varias veces seguidas, sin hacer absolutamente ningún cambio en la configuración entre compilaciones, produce ejecutables de tamaños ligeramente diferentes. Creé un proyecto en particular 10 veces y obtuve 10 (!) Diferentes tamaños ejecutables, ¡un tamaño diferente cada vez!

Me he dado cuenta de que el fenómeno solo ocurre en proyectos de tamaño/complejidad suficiente.

Si hace esto en un proyecto relativamente simple, el ejecutable tendrá el mismo tamaño, aunque todavía habrá diferencias internas (si hace una comparación binaria). No tengo tiempo para investigar esto en este momento, pero tengo una leve curiosidad.

Tenga en cuenta que simplemente hacer una compilación, es decir, simplemente volver a vincular la aplicación, no cambia el tamaño del archivo ejecutable resultante, pero cambia su contenido (los archivos binarios generados no son idénticos).

1

En realidad, es un problema que existe desde hace bastante tiempo. Ver

CodeGear Quality Control

Borland Delphi newsgroups

discusión reciente de esto en Delphi newsgroups (Ver http).

No tiene absolutamente nada que ver con las diferencias en la instalación de componentes ni nada de eso; de hecho, la última referencia menciona algo relacionado con las marcas de tiempo que se insertan en la aplicación en cada compilación/compilación. Además, si está haciendo una compilación y está incluyendo la información de la versión, y tiene el número de compilación configurado para autoincrementarse, esto también causará diferencias binarias.

4

Hmmm ...

SizeOf (XPsp2.exe) < SizeOf (XPSP3.exe) < SizeOf (VISTA.EXE)

Conclusión:

Cuanto más tarde la versión de Windows, el más "relleno" se inserta al azar para agregar credibilidad. Si toma más espacio, entonces debe ser más poderoso, ¡y probablemente fue codificado por los mejores ingenieros del mundo! :-) (lo siento, ¡he estado trabajando en Microsoft por mucho tiempo!)

+0

esto es definitivamente una tendencia estadística :) – mjn

Cuestiones relacionadas