it.phhsnews.com


it.phhsnews.com / Perché Zip in grado di comprimere singoli file migliori di più file con lo stesso contenuto?

Perché Zip in grado di comprimere singoli file migliori di più file con lo stesso contenuto?


Essere in grado di comprimere i nostri file in modo che sia più facile condividerli e / o trasportarli può rendere l'elettronica vive molto più facilmente, ma a volte possiamo vedere risultati di ridimensionamento strani o imprevisti dopo averli compressi. Perché? Il post di Q & A di SuperUser di oggi ha le risposte alle domande di un lettore confuso.

La sessione di domande e risposte di oggi ci viene fornita per gentile concessione di SuperUser, una suddivisione di Stack Exchange, un raggruppamento di siti Web di domande e risposte.

Foto per gentile concessione di Jean-Etienne Minh-Duy Poirrier (Flickr).

La domanda

Il lettore SuperUser sixtyfootersdude vuole sapere perché zip è in grado di comprimere singoli file meglio di più file con lo stesso tipo di contenuto:

Supponiamo che io avere 10.000 file XML e volere inviarli ad un amico. Prima di inviarli, vorrei comprimerli.

Metodo 1: Non comprimerli

Risultati:

Metodo 2: Zip ogni file separatamente e inviarlo 10.000 file XML zippati

Comando:

Risultati:

Metodo 3: creare un file zip singolo contenente tutti i 10.000 file XML

Comando:

Risultati:

Metodo 4: concatenare i file in un singolo file e comprimerlo

Comando:

Risultati:

Domande

  • Perché ottengo risultati così drammaticamente migliori quando sto comprimendo un singolo file?
  • Mi aspettavo di ottenere risultati drasticamente migliori usando il metodo 3 piuttosto che il metodo 2, ma io non. Perché è questo?
  • Questo comportamento è specifico per zip? Se provassi a usare Gzip, otterrei risultati diversi?

Informazioni aggiuntive

Meta dati

Una delle risposte fornite suggerisce che la differenza è il metadati di sistema che è memorizzato nel file zip. Non credo che questo possa essere il caso. Per testarlo, ho fatto quanto segue:

Il file zip risultante è 1,4 MB. Ciò significa che ci sono ancora circa dieci MB di spazio non spiegato.

Perché zip è in grado di comprimere singoli file meglio di più file con lo stesso tipo di contenuto?

La risposta

I contributori SuperUser Alan Shutko e Aganju hanno la risposta per noi. Innanzitutto, Alan Shutko:

La compressione Zip si basa su pattern ripetitivi nei dati da comprimere e la compressione migliora man mano che il file è lungo, poiché è possibile trovare e utilizzare modelli sempre più lunghi.

Semplificato, se comprimi un file, il dizionario che mappa i codici (brevi) in pattern (più lunghi) è necessariamente contenuto in ogni file zip risultante; se si esegue il zip di un file lungo, il dizionario viene "riutilizzato" e diventa ancora più efficace su tutto il contenuto.

Se i file sono anche un po 'simili (il testo è sempre), il riutilizzo del "dizionario" diventa molto efficiente e il risultato è un file zip totale molto più piccolo.

Seguito dalla risposta di Aganju:

In zip, ogni file viene compresso separatamente. L'opposto è compressione solida , ovvero i file vengono compressi insieme. 7-zip e Rar utilizzano una compressione solida per impostazione predefinita. Gzip e Bzip2 non possono comprimere più file, quindi Tar viene usato per primo, con lo stesso effetto della compressione solida.

Poiché i file xml hanno una struttura simile (e probabilmente contenuti simili), se i file vengono compressi insieme, la compressione sarà più alta .

Ad esempio, se un file contiene la stringa " " e il compressore ha già trovato quella stringa in un altro file, la sostituirà con un puntatore piccolo alla corrispondenza precedente. Se il compressore non utilizza la compressione solida, la prima occorrenza della stringa nel file verrà registrata come letterale , che è più grande.


Hai qualcosa da aggiungere alla spiegazione? Audio disattivato nei commenti. Vuoi leggere più risposte dagli altri utenti di Stack Exchange esperti di tecnologia? Controlla il thread completo di discussione qui.


Come programmare il tuo Ecobee per andare in modalità Vacation

Come programmare il tuo Ecobee per andare in modalità Vacation

Se stai andando in vacanza presto, e non vuoi essere disturbato a cambiare il termostato mentre stai cercando di disputare il famiglia, l'Ecobee consente in realtà di programmare il termostato per passare in una modalità di viaggio in anticipo. Impostare una vacanza su Ecobee significa semplicemente metterlo in una modalità di uscita, che abbassa le impostazioni di temperatura in modo che il riscaldamento o l'aria condizionata non funziona come spesso quando sei fuori casa.

(how-to)

Come migliorare la durata della batteria con le nuove impostazioni di alimentazione di Windows 10

Come migliorare la durata della batteria con le nuove impostazioni di alimentazione di Windows 10

Mentre Windows 10 sta ricevendo molta pressione per il suo "nuovo" menu Start, oltre a ciò c'è ancora molta roba della maggior parte degli utenti chi ha saltato Windows 8 probabilmente non lo sa. Oggi vogliamo parlare delle impostazioni di alimentazione e batteria di Windows 10. Il modo più rapido per accedere alle impostazioni è aprire il Centro operativo e fare clic su "Tutte le impostazioni".

(how-to)