Che cosa dovrebbero sapere gli sviluppatori sulla compressione del file binario eseguibile di Windows?

4

Non ne avevo mai sentito parlare prima, quindi vergogna per me, ma programmi come UPX possono comprimere i miei file dell'80% che è totalmente dolce, ma non ho idea di quali siano gli svantaggi nel farlo. O anche quello che fa il compressore.

  • Il sito web collegato sopra non dice nulla sul collegamento dinamico delle DLL, ma menziona la compressione di DESCENT 2 e la compressione di Netscape 4.06. Inoltre, non dice quali sono i compromessi, ma solo i benefici. Se non ci fossero compromessi, perché il mio linker non comprimerebbe il file?

Se ho un ambiente in cui ho un eseguibile e 20-30 DLL, alcuni dei quali sono caricati in modo dinamico uno scaricamento abbastanza arbitrariamente, ma non nei loop (si spera), prendo un grande successo nel tempo di elaborazione decomprimendo queste DLL quando vengono usati?

    
posta Peter Turner 24.08.2012 - 18:32
fonte

1 risposta

4

La compressione eseguibile danneggia le prestazioni?

Come per la maggior parte delle domande sulle prestazioni, sospetto che la risposta sia: "Esegui alcuni test delle prestazioni / profilazione per te stesso e guarda cosa scopri."

  • Le prestazioni potrebbero essere peggiori, perché si ha il sovraccarico di run-time della decompressione.
  • Le prestazioni potrebbero essere migliori, perché hai meno dati da leggere sul disco rigido.
  • Le prestazioni potrebbero essere peggiori, perché l'eseguibile deve essere letto e decompresso in memoria, invece di lasciare che il sistema operativo mappi lo spazio di memoria virtuale direttamente sul file eseguibile su disco, il che consentirebbe di caricare più facilmente pagine su richiesta, condividerle tra più istanze eseguibili e scartarle se c'è una pressione di memoria.

Wikipedia ha una discussione più approfondita dei vantaggi e svantaggi della compressione eseguibile .

Perché i linker non usano automaticamente la compressione eseguibile?

Ci sono probabilmente due ragioni principali:

  • Aggiunge complessità e, in fase di programmazione, la complessità è Bad ™.
  • Non dà molto beneficio. Risparmiare spazio sotto c:\Program Files non è molto utile; i moderni dischi rigidi sono così grandi che il tuo spazio exe non è un problema. Le velocità di download sono importanti, ma il tuo programma di installazione comprime già i tuoi ex, quindi comprimerli di nuovo con UPX non farà una differenza sostanziale. Se stai cercando di realizzare un eseguibile portatile (senza installazione necessaria), UPX potrebbe aiutarti, ma è un mercato di nicchia.
risposta data 30.08.2012 - 22:40
fonte

Leggi altre domande sui tag