Domanda

Come posso ridurre le risorse all'interno della mia applicazione? Ho provato una serie di trucchi Ho ridotto e riscritto il codice, riduci il numero di riga, Riduci commenti, Compresso il file EXE finale, ma non è questo il modo in cui voglio andare, Migliora il cast di tipo variabile, Rimuovi ICONE, BMP, JPG, dall'interno dell'applicazione Ho bisogno che le mie applicazioni siano le più piccole possibili sul file EXE finale e sul consumo generale di risorse. Altre idee, buoni articoli su questo argomento Grazie

È stato utile?

Soluzione

Inserisci tutte le immagini che il programma utilizza più di una volta negli elenchi di immagini o nei componenti TGraphic e inseriscili in un modulo dati. Collegare tutti i componenti utilizzando questi glifi agli elenchi di immagini. Se usi la finestra di ispezione degli oggetti per aggiungere lo stesso glifo a più componenti, ne finirai con più copie, aumentando sia il tempo di caricamento che le dimensioni del file eseguibile e del set di lavoro.

Altri suggerimenti

Che dire di disattivare le informazioni di debug nelle opzioni del progetto:

  • nessuna informazione di debug
  • nessun controllo di runtime
  • se possibile ridurre il numero di unità esterne utilizzate.

Ma le informazioni di debug possono essere un killer importante.

Non spenderei tempo a rimuovere i commenti in ogni caso il compilatore li rimuove

Potresti fare riferimento alle tue immagini da un servizio esterno (ad esempio Amazon S3)

Un bel trucco per ridurre la dimensione dell'eseguibile (in realtà, la dimensione dell'immagine PE, poiché questo vale anche per le DLL), quando rilocazione non è un problema:

Lascia fuori le informazioni di trasferimento!

In Delphi, potresti farlo in questo modo:

// 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

Cheers!

Rilascia il VCL e usa KOL e MCK: http://kolmck.net/

Questo è un cambiamento radicale e molto grande, ma ridurrà le dimensioni degli exe.

Non creare automaticamente tutti i moduli, anche se Delphi ti offre ora l'opzione, e lo ha fatto incondizionatamente per i nuovi moduli nelle versioni precedenti. Crea solo il modulo principale e usa il seguente codice (pseudo) per mostrare le finestre di dialogo modali:

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;

Ciò ridurrà i tempi di caricamento delle applicazioni e ridurrà l'utilizzo complessivo delle risorse, in particolare per dialoghi complessi con molti controlli.

Misura prima, POI ottimizza. Quanto è grande la tua applicazione e quanto vorresti che fosse?

Sei preoccupato per ...

La dimensione del file .EXE dell'applicazione sul disco? Quindi ...

  • Crea con i pacchetti di runtime su . Otterrai un piccolo .EXE, ma dovrai anche distribuire .bpls.

La memoria RAM utilizzata dall'applicazione? Quindi ...

  • Crea con i pacchetti di runtime disattivati: il linker ometterà la maggior parte delle parti di pacchetti non utilizzate.

La dimensione del programma di installazione dell'applicazione? Quindi ...

  • Crea con pacchetti di runtime off
  • Usa Inno Setup
  • La maggior parte dei suggerimenti sopra riportati?

La dimensione dell'applicazione PLUS PACCHETTI / DLL dopo l'installazione? Quindi ...

  • Crea con i pacchetti di runtime off e usa 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.

Questo articolo può esserti utile.

Vale davvero la pena di tutti questi problemi? Non viviamo più tempi di memoria di 640 KB.

Se vuoi che EXE sia più piccolo, usa il collegamento dinamico di pacchetti e librerie. Questo dà la maggior spinta. Metti anche tutte le tue risorse (immagini, suoni) in DLL separate. Non risparmierai nulla eliminando i commenti e scrivendo tutto il codice in una riga lunga.

In genere, se si desidera una dimensione EXE più piccola, utilizzare una versione precedente di Delphi.

Uso sempre UPX per comprimere i file exe. Funziona perfettamente, causando spesso una compressione del fattore 2. E, naturalmente, disabilitare tutte le informazioni di debug contribuirà a ridurre le dimensioni del file.

Utilizza un profiler di memoria come quello da Red Gate a ottenere una vista in tempo reale sull'utilizzo della memoria di runtime.

UPX e ASPack creeranno molti problemi a causa degli allarmi falsi positivi dell'antivirus. Kaspersky lo fa molto!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top