Massima compressione per i file (per il trasferimento web)?


14

Ho visto alcuni file altamente compressi in giro, come 700 MB di dati compressi a circa 30-50 MB.

Ma come si ottengono tali file compressi? Ho provato a utilizzare software come WinRAR e 7Zip ma non ho mai raggiunto una compressione così elevata.

Quali sono le tecniche / i software che ti consentono di comprimere i file così bene?

(PS sto usando Windows XP)


Bella idea ... ma da dove prendi comunque questi file?
Robinicks,

3
Ho visto i file di registro del server comprimere 7zip (principalmente testo) fino a circa l'1% delle loro dimensioni originali.
Umber Ferrule,

2
Apri Blocco note. Digitare 1 miliardo di volte "A". Salva, quindi comprimi. WOW! Crea un'app che scrive 1 miliardo (vero) numeri casuali in un file. Comprimilo. EH?
igrimpe,

igrimpe: molti modelli di algoritmi di compressione indicizzano. Un miliardo di A è un A un miliardo di volte. Puoi comprimerlo in [A] {1, 1000000000}. Se si dispone di un miliardo di numeri casuali, diventa difficile eseguire la corrispondenza dei modelli poiché ciascun numero consecutivo in un determinato sottoinsieme diminuisce esponenzialmente la probabilità di un sottoinsieme corrispondente.
AaronF,

Risposte:


11

Se il tempo impiegato per comprimere i dati non è un problema, è possibile ottimizzare le dimensioni compresse utilizzando diversi strumenti insieme.

Comprimi i dati più volte utilizzando strumenti diversi come 7zip, winrar (per zip) e bjwflate.

(Si noti che ciò non significa comprimere il file zip più e più volte, ma piuttosto creare un numero di file zip alternativi utilizzando strumenti diversi)

Quindi, eseguire deflopt su ciascun archivio per ridurre un po 'di più ogni archivio.

Infine, esegui zipmix sulla raccolta di archivi. Poiché diversi strumenti zip sono migliori su file diversi, zipmix preleva la migliore versione compressa di ciascun file da ciascuno degli archivi e produce un output più piccolo di qualsiasi altro strumento zip che avrebbe potuto produrre individualmente.

Si noti tuttavia che non è garantito che questo funzioni alcun tipo di magia sui file. Alcuni tipi di dati semplicemente non si comprimono molto bene, come JPEG e MP3. Questi file sono già compressi internamente.


4
JPEG e MP3 non sono compressi. Sono compressi ma non compressi.
KovBal

Questo è un consiglio incredibilmente scarso, cercare di usare sequenzialmente più algoritmi di compressione è una pessima idea. Ogni algoritmo crea un file compresso + overhead, quindi utilizzando più stai effettivamente aggiungendo dati ai dati che stai cercando di comprimere - è come provare a scavare un buco nella sabbia, più profondo vai e più sabbia si riversa su voi. Stai molto meglio usando un singolo buon algoritmo con le massime impostazioni di compressione.
Tacroy,

Penso che tu abbia frainteso .. gli stessi dati non vengono ricompressi più volte. Piuttosto, stai semplicemente scegliendo il miglior singolo algoritmo in base al file anziché all'archivio.
izb,

6
Comprimere i dati più volte è piuttosto fuorviante.
ta.speot.is l'

12

Ciò dipende interamente dai dati compressi.

Il testo si comprime molto bene, i formati binari non molto bene e i dati compressi (mp3, jpg, mpeg) per niente.

Ecco una buona tabella di confronto delle compressioni da Wikipedia.


Sono consapevole che la compressione dipende dal tipo di dati, ma esistono delle tecniche specifiche che ti aiutano a comprimere ulteriormente i file?
rzlines

3
Una volta compresso qualcosa, di solito è impossibile ridurlo in modo misurabile. Devi solo selezionare il metodo di compressione appropriato per i tuoi dati.
Nifle,

Il testo può essere facilmente compresso fino al 90%.
Georg Schölly,

@ GeorgSchölly: è eccellente. Perché posso convertire qualsiasi dato in testo, ad esempio convertire ogni byte binario in due cifre esadecimali visualizzate in testo. Ciò raddoppierebbe le mie dimensioni, ma risparmiando il 90% delle dimensioni raddoppiate si traduce in un risparmio complessivo dell'80%. (Oppure, potrei usare Base64 per un po 'più di efficienza nella conversione da binario a testo.) Questa è una notizia incredibilmente grande! :)
TOOGAM,

8

Le risposte precedenti sono sbagliate di un ordine di grandezza!

Il miglior algoritmo di compressione con cui ho esperienza personale è paq8o10t (vedi pagina zpaq e PDF ).

Suggerimento: il comando per comprimere files_or_folders sarebbe come:

paq8o10t -5 archive files_or_folders

Dimensione dell'archivio rispetto al tempo per comprimere ed estrarre 10 GB (79.431 file) su un disco rigido USB esterno con impostazioni predefinite e massime su un laptop Dell Latitude E6510 (Core i7 M620, hyperthread 2 + 2, 2,66 GHz, 4 GB, Ubuntu Linux , Vino 1.6).  Dati da 10 GB Benchmark (sistema 4).

Fonte: utilità di backup e archiviazione incrementali per l'inserimento nel journal

Puoi trovare un mirror del codice sorgente su GitHub .


Un algoritmo di compressione leggermente migliore, e vincitore del Premio Hutter , è decomp8 (vedi link nella pagina dei premi). Tuttavia, non esiste un programma di compressione che è possibile effettivamente utilizzare.


Per file molto grandi lrzip può raggiungere rapporti di compressione semplicemente comici .

Un esempio da README.benchmarks:


Prendiamo sei alberi del kernel una versione a parte come tarball, da linux-2.6.31 a linux-2.6.36. Questi mostreranno molte informazioni ridondanti, ma a parte centinaia di megabyte, che lrzip sarà molto bravo a comprimere. Per semplicità, verranno confrontati solo 7z poiché è di gran lunga il miglior compressore per uso generale al momento:

Questi sono benchmark eseguiti su un Intel Core2 dual core da 2,53 Ghz con ram da 4 GB utilizzando lrzip v0.5.1. Si noti che era in esecuzione con uno spazio utenti a 32 bit, quindi era possibile solo l'indirizzamento da 2 GB. Tuttavia, il benchmark è stato eseguito con l'opzione -U che consente di trattare l'intero file come un'unica finestra di compressione.

Tarball di 6 alberi del kernel consecutivi.

Compression    Size                 Percentage      Compress    Decompress
None           2373713920           100             [n/a]       [n/a]
7z             344088002            14.5            17m26s      1m22s
lrzip          104874109            4.4             11m37s      56s
lrzip -l       223130711            9.4             05m21s      1m01s
lrzip -U       73356070             3.1             08m53s      43s
lrzip -Ul      158851141            6.7             04m31s      35s
lrzip -Uz      62614573             2.6             24m42s      25m30s

È ottimizzato per fornire il massimo rapporto di compressione, ma è enormemente più lento dei contendenti.
Eric J.

2
@Eric J. sì, ma la domanda non specificava la velocità di compressione / decompressione;)
Alexander Riccio

3

Squeezechart.com contiene confronti di vari tassi di compressione. Sebbene, come affermato dalla risposta di Nifle, è improbabile che si ottengano tassi di compressione così elevati per i formati binari.


2

La maggior parte degli strumenti di compressione dispone di impostazioni che consentono di ottenere un tasso di compressione più elevato a scapito di tempi di compressione / decompressione più lenti e maggiore utilizzo della RAM.

Per 7-Zip, cerca "Aggiungi alla finestra di dialogo di archiviazione" nella guida integrata per maggiori dettagli.


2

Puoi provare 7zip con le seguenti impostazioni ultra:

7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on big_file.mysql.7z big_file.mysql

2

Basta controllare il Riepilogo dei test di riferimento per la compressione di più file che ha il miglior elenco di compressione che costituisce il benchmark di compressione completo.

Top 30

inserisci qui la descrizione dell'immagine

Le migliori prestazioni (basate sulla compressione) in questo test sono PAQ8 e WinRK (PWCM). Sono in grado di comprimere il testset da 300+ Mb a meno di 62 Mb (riduzione dell'80% delle dimensioni) ma impiegano un minimo di 8,5 ore per completare il test. Il programma numero uno (PAQ8P) impiega quasi 12 ore e il numero quattro (PAQAR) anche 17 ore per completare il test. WinRK, il programma con la 2a migliore compressione (79,7%) dura circa 8,5 ore. Non sorprende che tutti i programmi citati utilizzino un motore PAQ (-like) per la compressione. Se hai file con immagini incorporate (ad es. File Word DOC) usa PAQ8, li riconoscerà e li comprimerà separatamente, aumentando significativamente la compressione. Tutti i programmi citati (tranne WinRK) sono gratuiti.


1

La tua scommessa migliore qui sembra essere tentativi ed errori. Prova tutte le tecniche di compressione disponibili su ciascun file e scegli il meglio da mettere sul tuo sito web. Fortunatamente i computer fanno questo genere di cose abbastanza velocemente e non si annoiano. Potresti scrivere un semplice script per automatizzare il processo in modo che sia "relativamente indolore".

Non aspettatevi miracoli: 700 Mb fino a 30 Mb non accadono così spesso. File di registro come menzionato sopra - sì. "Il tuo file medio" - assolutamente no.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.