2011-02-10 24 views
5

Basta chiedersi, se è generalmente una buona idea comprimere i file jar che verranno forniti con un'applicazione desktop (nessun accesso di rete ai jar), se la decompressione avrà un impatto maggiore del file io.I file jar devono essere compressi per le applicazioni desktop?

EDIT: Grazie per le risposte finora, e mi dispiace per essere un po 'poco chiaro qui. Non stavo parlando della spedizione dei vasi al cliente, ma del formato ottimale per i file jar sul disco all'avvio dell'app. So che i file jar sono file zip e possono essere offerti con diversi livelli di compressione (o nessuna compressione), e mi chiedevo direttamente come la compressione avrebbe alterato le prestazioni di avvio, non solo sulla mia casella di sviluppo (ha un veloce disco SSD in esso , ma anche su dischi più lenti).

+0

Il formato interno di un jar java è un archivio ZIP. Entrambi i set di strumenti possono essere utilizzati con entrambi i tipi di file. I file possono essere compressi (accesso al disco più veloce) o non compressi (meno CPU). Lasciali come li ottieni. – BillThor

risposta

2

Mi aspetto che la risposta dipenda dall'applicazione. Tuttavia, dovrebbe essere facile determinare sperimentalmente se i JAR compressi danno avvio più veloce o più lento per l'applicazione. Basta creare il file JAR dell'applicazione con compressione e compressione off e confrontare i tempi di avvio dell'applicazione. (Provalo su diversi computer, ad esempio con dischi lenti, dischi veloci, SSD e con diverse quantità di RAM. Ricorda che alcuni sistemi operativi memorizzano i file nella cache in modo aggressivo e ne tengono conto nelle misure temporali.)

Mentre si è in esso, si dovrebbe anche indagare l'impatto dei diversi livelli di compressione (tramite le opzioni di comando jar) e l'utilizzo di pack200


detto questo, la mia sensazione è che la differenza tra compressi e non compressi per installato in locale I JAR saranno abbastanza piccoli che l'utente difficilmente noterà la differenza.

1

In quasi tutte le situazioni desktop ragionevoli, il costo dell'IO su disco è decisamente superiore al costo della compressione. Sarà quasi certamente una vittoria per comprimere i file.

Detto questo, un file JAR è già compresso. Generalmente non vale la pena di comprimere le cose. Quindi direi di no, non comprimere i file JAR in quanto sono già compressi.

+3

Sospetto che la domanda dell'OP abbia avuto altro da fare se dovevano comprimere * i loro * JAR prima della consegna - non comprimere i file che qualcun altro ha dato loro. I file JAR non devono essere compressi - è solo un file zip, ed è abbastanza legittimo non comprimere i contenuti. –

+1

* "In quasi tutte le situazioni desktop ragionevoli, il costo dell'IO su disco è molto più alto del costo di compressione. Sarà quasi certamente una vittoria per comprimere i file." * - Non sono sicuro che sia vero. Su una macchina Linux con molta memoria, i file saranno memorizzati nella memoria del sistema operativo. La velocità di lettura potrebbe (in teoria) avvicinarsi alla velocità di una copia da memoria a memoria. –

+0

Non credo che i file vengano memorizzati nella cache all'inizio, ma i blocchi di dati dei file saranno nella cache quando l'app ha caricato alcune classi. Almeno i blocchi trattati con i file di classe. – Daniel

Problemi correlati