Pregunta

¿Cómo puedo reducir los recursos dentro de mi aplicación? He probado varios trucos He reducido y reescrito el código, reduzco el número de línea, Reducir comentarios, Comprimió el EXE final, pero esta no es la forma en que quiero ir, Mejorar el tipo de variable cast, Eliminar ICONs, BMP, JPG, desde dentro de la aplicación Necesito que mis aplicaciones sean lo más pequeñas posible en el EXE final y en el consumo de recursos en general. Más ideas, buenos artículos sobre este tema. Gracias

¿Fue útil?

Solución

Coloque las imágenes que el programa utiliza más de una vez en las listas de imágenes o componentes TGraphic, y colóquelas en un módulo de datos. Vincula todos tus componentes usando estos glifos a las listas de imágenes. Si utiliza el Inspector de objetos para agregar el mismo glifo a varios componentes, terminará con varias copias del mismo, lo que aumentará tanto el tiempo de carga como el tamaño del conjunto ejecutable y de trabajo.

Otros consejos

¿Qué pasa con desactivar la información de depuración en las opciones del proyecto:

  • sin información de depuración
  • sin controles de tiempo de ejecución
  • reducir el número de unidades externas que se usan si es posible.

Pero la información de depuración puede ser un gran asesino.

No pasaría ningún tiempo eliminando comentarios que el compilador los elimina de todos modos

Puede hacer referencia a sus imágenes desde un servicio externo (por ejemplo, Amazon S3)

Un buen truco para reducir el tamaño del ejecutable (en realidad, el tamaño de la imagen de PE, ya que esto también se aplica a los DLL), cuando reubicación no es un problema:

¡Deja la información de reubicación fuera!

En Delphi, podría hacerlo así:

// Remove relocation table (generates smaller executables) :
// (See http://hallvards.blogspot.com/2006/09/hack12-create-smaller-exe-files.html)
{$SetPEFlags 1} // 1 = Windows.IMAGE_FILE_RELOCS_STRIPPED

¡Salud!

Suelte el VCL y use KOL y MCK: http://kolmck.net/

Este es un cambio radical y muy grande, pero reducirá el tamaño del exe.

No cree todos los formularios automáticamente, a pesar de que Delphi le da la opción ahora, e hizo esto incondicionalmente para nuevos formularios en versiones anteriores. Solo cree el formulario principal y use el siguiente (pseudo) código para mostrar los cuadros de diálogo modales:

procedure TMainForm.OptionDialog(Sender: TObject);
var
  Dlg: TOptionDialog;
begin
  Dlg := TOptionDialog.Create(nil);
  try
    // prepare dialog
    if Dlg.ShowModal = mrOK then begin
      // apply changed settings
    end;
  finally
    Dlg.Free;
  end;
end;

Esto acortará el tiempo de carga de la aplicación y reducirá su uso general de recursos, especialmente para diálogos complejos con muchos controles.

Medir primero, ENTONCES optimizar. ¿Qué tan grande es su aplicación y qué tan grande le gustaría que fuera?

¿Estás preocupado por ...

¿El tamaño del archivo .EXE de la aplicación en el disco? Entonces ...

  • Compilar con paquetes de tiempo de ejecución en . Obtendrá un pequeño .EXE, pero también necesitará distribuir .bpls.

¿La memoria RAM utilizada por la aplicación? Entonces ...

  • Compilación con paquetes de tiempo de ejecución desactivados: el vinculador omitirá la mayoría de las partes no utilizadas de los paquetes.

¿El tamaño del instalador de la aplicación? Entonces ...

  • Compilar con paquetes de tiempo de ejecución off
  • Usar Inno Setup
  • ¿La mayoría de las sugerencias anteriores?

¿El tamaño de la aplicación PLUS PACKAGES / DLLS después de la instalación? Entonces ...

  • Cree con paquetes de tiempo de ejecución desactivados y use UPX
Project -> Options -> Compiler:
===============================
Optimization ON
Debug Information OFF
Local Symbols OFF
Reference Info OFF
Use debug DCUs OFF

Project -> Options -> Packages:
===============================
Build with runtime packages ON (but you will have to distribute your BPLs!)
Note to non-delphi folks:
a BPL is just a DLL, but with magic Delphi dust to make it easier to use.

Este artículo puede ser útil para ti.

¿Realmente vale la pena todos estos problemas? Ya no vivimos en tiempos de memoria de 640 KB.

Si desea que su EXE sea más pequeño, utilice la vinculación dinámica de paquetes y bibliotecas. Eso da la mayor parte del impulso. También ponga todos sus recursos (imágenes, sonidos) en DLL separados. No guardará nada eliminando comentarios y escribiendo todo su código en una larga línea.

Por lo general, si desea un tamaño EXE más pequeño, elija una versión anterior de Delphi.

Siempre uso UPX para comprimir archivos exe. Funciona perfectamente, a menudo resulta en una compresión del factor 2. Y, por supuesto, deshabilitar toda la información de depuración ayudará a reducir el tamaño del archivo.

Utilice un generador de perfiles de memoria como el de Red Gate para obtenga una vista en tiempo real del uso de la memoria en tiempo de ejecución.

UPX y ASPack crearán muchos problemas debido a las falsas alarmas positivas del antivirus. ¡Kaspersky hace eso mucho!

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