Domanda

ho lima di qualche testo casuale size = 27 GB e dopo la compressione diventa 40 MB o giù di lì.

E un file di 3,5 GB sql diventare 45 Mb dopo la compressione.

Ma un file di testo 109 mb diventare 72 mb dopo la compressione in modo da ciò che può essere sbagliato con esso.

Perché così meno compressa, si deve 10 MB o giù di lì, o mi manca qualcosa.

Tutti i file che ho potuto vedere è un testo solo in inglese e alcuni simboli e grammatica (/, -. = + Etc)

Perché?

Se non si può dire come posso Super comprimere un file di testo?

posso codice in PHP, np in questo.

È stato utile?

Soluzione

Il rapporto di compressione di un file dipende dal suo contenuto.

La maggior parte degli algoritmi di compressione lavorare convertendo i dati ripetuti in una singola ripetizione, specificando quante volte è stato ripetuto.

Per esempio, un file che contiene la lettera a 1.000.000 volte può essere compresso molto di più di un file con un contenuto del tutto casuale.

Per ulteriori informazioni, si prega di fornire ulteriori informazioni.

Altri suggerimenti

Pensare in questo modo ... se si dispone di un file che contiene:

abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc

Il file memorizza essenzialmente solo abc times 18

D'altra parte, questo file:

abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz

potrebbe memorizzare solo:

abcdefghijklmnopqrstuvwxyz times 2

In questo modo, la seconda comprime file come un file più grande della prima, anche se è più breve per cominciare.

La compressione funziona rimuovendo i duplicati nei dati di input. Il file 3,5 GB diventa molto meno dopo la compressione, perché ha un sacco di dati duplicati, mentre il file più piccolo non è compresso tanto perché non contiene più dati duplicati.

Se si vuole capire come funziona la compressione è più zippare utility, poi guardare di Wikipedia Lempel-Ziv-Welch articolo, che è l'algoritmo su cui sono costruiti la maggior parte di questi algoritmi.

PHP è probabilmente la scelta sbagliata per tale progetto un perché sta andando ad essere estremamente lento in quella lingua rispetto alle perfettamente buone biblioteche esistenti in C, che fanno già parte del PHP stesso.

In generale il livello di compressione dipende dalla quantità di somiglianza e modelli l'algoritmo può trovare nel file. Se tutti i file contengono il testo inglese le figure sono strani. Ho il forte sospetto che i file che hanno un rapporto di compressione estrema contengono grandi blocchi di ripetere i segmenti di testo.

La compressione funziona rimuovendo ridondanza dei dati. Il luogo definitivo per l'inizio è probabilmente con Huffman Coding , che è una delle prime opere seminali direttamente sul il problema, ma si può cura di scavare più indietro alle opere originali di Shannon sulla Information Theory .

Questi non sono concetti nuovi - hanno maturato una significativa prima di nuovo l'interesse nel 1940 e '50, quando le persone erano interessati a trasmettere i dati in modo efficiente i canali sopra molto limitate. Il soggetto non è solo di interesse per il calcolo sia - ci sono alcuni collegamenti molto profondi con l'entropia e altri fisica fondamentale. Ad esempio risulta perfettamente dati compressi è indistinguibile dal rumore bianco.

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