Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Tamaño del ejecutable en Delphi XE6 (https://www.clubdelphi.com/foros/showthread.php?t=86110)

adrall 18-06-2014 18:52:32

Tamaño del ejecutable en Delphi XE6
 
Hola a todos,

Hasta ahora he estado desarrollando en Delphi XE, hoy he descargado y he instalado la versión de prueba del nuevo Delphi XE6 porque ya estoy pensando en actualizarme. He probado diversas cosas positivamente pero me ha sorprendido el tamaño resultante del ejecutable.

Una simple aplicacion VCL con un TButton y un TLabel ocupa más de 10 Mb.!! y haciendo uso de FireDAC, un TQuery y TDbGrid resultaba de 16 Mb. ¿Es esto es normal en estas ultimas versiones? o es que debo realizar alguna desactivación de librerias o algo así para que no las incluya en el EXE... ya no recuerdo si debia seguir algun paso de este tipo despues de la instalación...

Gracias por vuestras respuestas.

Saludos

oscorm 18-06-2014 20:30:31

USA UPX que te hará un ejecutable bastante más pequeño esa es la solución más rápida y directa, en caso de que te quieras embarcar en deshabilitar Units, tendrás que quitar todo aquello que no te interesa; además hay diferencia entre la aplicación con una configuración Debug y la con configuración Release.
Saludos

MAXIUM 18-06-2014 23:57:02

Usar UPX no es la solución. No es lo optimo.

En Delphi 7 eso mismo ocupa máximo 600kb.

adrall 19-06-2014 10:15:49

Daba por supuesto que si no se utiliza alguna funcion, etc. de una unit, el compilador no la incluye en el ejecutable.

oscorm: Siempre he usado la configuración por defecto que debe ser Debug, ¿podrias indicarme como lo hago para obtener una version Release? Gracias

Neftali [Germán.Estévez] 19-06-2014 10:25:28

Cita:

Empezado por adrall (Mensaje 477985)
Hola a todos,

Hasta ahora he estado desarrollando en Delphi XE, hoy he descargado y he instalado la versión de prueba del nuevo Delphi XE6 porque ya estoy pensando en actualizarme. He probado diversas cosas positivamente pero me ha sorprendido el tamaño resultante del ejecutable.

Una simple aplicacion VCL con un TButton y un TLabel ocupa más de 10 Mb.!! y haciendo uso de FireDAC, un TQuery y TDbGrid resultaba de 16 Mb. ¿Es esto es normal en estas ultimas versiones? o es que debo realizar alguna desactivación de librerias o algo así para que no las incluya en el EXE... ya no recuerdo si debia seguir algun paso de este tipo despues de la instalación...

Hola.
Es cierto que el tamaño de los ejecutables han subido junto con las versiones de Delphi.
El programa que tú comentas, en Delphi6/7 no sobrepasaría 1 MG (casi seguro) y en la versión del Delphi XE6 se va a 2.3 Megas (en la versión 32b) y unos 3.6 megas en la versión de 64 bits.
Si buscas por internet hay explicaciones detalladas de porqué ese crecimiento de tamaño.

Los 10 megas que te salen a tí, es porque estás añadiendo información de Debug.
Ahora es más sencillo cambiar entre uno y otro (en comaración con las versiones antiguas). Basta con que en el proyecto (Project Manager) selecciones como "Build Configuration", Release o Debug, dependiendo si estás trabajando a diario o estás generando una versión definitiva.
Puedes "tocar" manualmente las opciones de cada una de estas configuraciones y afinar un como más, pero tal y como vienen configuradas ya debería valer.


adrall 19-06-2014 13:25:27

Es cierto, el tamaño del EXE se reduce drasticamente en modo Release. En mi caso estoy acostumbrado a usar la libreria MadShi madExcept que es muy util para depurar las aplicaciones ya que puedes obtener un informe completo del error, incluyendo numeros de linea, etc. e incluso puedes automatizar el envio de un e-mail con el report del error producido en el ordenador del cliente y, logicamente, en modo Release no funciona.

En XE, una aplicación con multitud de Forms, accesso a MySQL con infinidad de TQuerys usando componentes DEVART, reports FastReports, GLib i en modo Debug me ocupa menos de 6Mb, en XE6 una mini aplicacion de prueba con un solo TQuery, un FastReport i un par de botones en modo Debug me ocupa 21 Mb. Me pregunto si hay alguna manera de limitar lo que el compilador incluye en el EXE, por ejemplo obviar partes de la VCL no utilizadas o algo así.

Gracias por las respuestas y saludos

Neftali [Germán.Estévez] 19-06-2014 13:39:51

Revisa las opciones detalladas.
Tal vez ahí puedas afinar un poco más.

Me suena también que en cierta manera puedes controlar la información RTTI que añades al EXE. Es una de las cosas que ha mejorado en las versiones nuevas, pero que también ha incrementado el tamaño del EXE.
Revisa este link:
http://docwiki.embarcadero.com/RADSt...ith_RTTI_Index

Ahí se puede leer esto:

...
Use the following compiler directives to control the generation of run-time type information. You may want to restrict the generation of RTTI to reduce the executable size.
...

adrall 22-06-2014 09:11:34

Estoy mirando de deshabilitar RTTI pero esto escapa un poco de mi nivel, bastante básico... de todas formas aquí os dejo un link que creo que ofrece información bastante clara: http://www.zipplet.co.uk/index.php/c...delphi2010rtti

He probado en XE el primer punto: Introducir las directivas en el DPR, i reduce un poco el ejecutable. El Lunes lo probaré en XE6 a ver que pasa.

Saludos

adrall 23-06-2014 12:46:28

Bien, el resultado en XE6 para una aplicacion simple con acceso a MySQL remoto, 1 DbGrid, un par de botones y un FastReport simple, es el siguiente:

Deshabilitando RTTI en el DPR: 18,089 Mb. en Debug y 5,307 Mb. en Release, y sin deshabilitar RTTI: 20,054 Mb. en Debug y 5,810 en Release.

Para deshabilitar he usado estas directivas de compilador:

Código Delphi [-]
{$WEAKLINKRTTI ON} 
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}


Saludos

Neftali [Germán.Estévez] 25-06-2014 09:58:28

^\||/
Gracias por el feedbak.

Neeruu 27-06-2014 03:30:11

Es realmente necesaria la información RTTI? (Pregunto desde mi ignorancia)
Puede traerme algún inconvenientes des habilitarla?

Neftali [Germán.Estévez] 27-06-2014 08:26:58

No es obligatoria, por eso se puede desactivar. Dependerá si la vas a utilizar o no.
Si en algún momento te hace falta siempre puedes volver a compilar activándola.

Neeruu 28-06-2014 06:39:11

Por ejemplo, cuando la podría necesitar? que es lo que uno puede hacer que necesite la info de RTTI? Pregunto esto para saber si yo la estoy usando y no estoy enterado...

Saludos...

nlsgarcia 28-06-2014 09:26:08

Neeruu,

Cita:

Empezado por Neeruu
...¿que es lo que uno puede hacer que necesite la info de RTTI?...

Revisa esta información:
Espero sea útil :)

Nelson.


La franja horaria es GMT +2. Ahora son las 19:05:17.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi