back to top

Comprimere file. Algoritmi e software a confronto.

Tra le operazioni più comuni che possono risultare utili anche per utenti non specializzati individuiamo senz’altro la compressione. Tramite tale operazione infatti, un qualunque file presente sul nostro computer può essere ristrutturato, in modo da occupare una porzione di memoria inferiore su disco fisso. Osserviamo però che, attualmente, si hanno a disposizione hard disk molto capienti a prezzi piuttosto contenuti, dunque l’utilità dei programmi di compressione parrebbe ridursi. Si tratta però di una conclusione affrettata.

Infatti, ad esempio, può essere interessante comprimere uno o più file prima di inviarli via mail, per ridurre i tempi di ricezione e di invio. Interessante e pratica inoltre anche la possibilità di archiviare diversi documenti in un unico file compresso, più pratico da trasmettere e manipolare.

Ma quali sono le principali possibilità a disposizione degli utenti per comprimere uno o più file? E cosa distingue i vari software a disposizione? Esaminiamo innanzitutto il fondamento teorico dei software di compressione, illustrando dunque le principali caratteristiche degli algoritmi di compressione.

Algoritmi di compressione

Una prima distinzione tra gli algoritmi di compressione si individua tra algoritmi lossless, ovvero senza alcun tipo di perdita di qualità e algoritmi lossy, in cui la riduzione di spazio occupato su disco si accompagna a una perdita di qualità. Si tratta, spesso, di un peggioramento qualitativo difficilmente percepibile: ad esempio nel caso della codifica mp3 per i file audio.

Tra gli algoritmi più utilizzati individuiamo senz’altro l’algoritmo di Huffman, l’algoritmo di Shannon-Fano e l’algoritmo di Lempel, Ziv e Welch. Pur non dilungandoci in spiegazioni teoriche, esaminiamo le principali caratteristiche dell’algoritmo di Huffman, che ha segnato la storia delle tecniche di compressione.

Rimandiamo i lettori interessati a ulteriori approfondimenti sulle tecniche di Shannon-Fano e Lempel-Ziv-Welch a link più specifici su questo argomento:

L’algoritmo di Huffman

L’algoritmo di Huffman appartiene alla categoria lossless, non introduce cioè nessuna perdita di qualità. Possiamo scomporne il funzionamento in cinque passi elementari:

  • Viene analizzato e conteggiato il numero di ricorrenze degli elementi di base del file da comprimere: i singoli caratteri in un file di testo, i pixel in un file grafico.
  • I due elementi meno frequenti sono accomunati in una categoria che li rappresenta entrambi. Così ad esempio se X ricorre 8 volte e Y 7 volte, viene creata la categoria XY, dotata di 15 ricorrenze. Intanto i componenti X e Y ricevono ciascuno un differente marcatore che li identifica come elementi entrati in un’associazione.
  • Vengono identificati i due successivi elementi meno frequenti nel file e li si riunisce in una nuova categoria, usando lo stesso procedimento descritto al punto 2. Il gruppo XY può a sua volta entrare in nuove associazioni e costituire, ad esempio, la categoria XYZ. Quando ciò accade, la X e la Y ricevono un nuovo identificatore di associazione che finisce con l’allungare il codice che identificherà univocamente ciascuna delle due lettere nel file compresso che verrà generato.
  • Viene creato quindi, per passaggi successivi, un albero costituito da una serie di ramificazioni binarie, all’interno del quale appaiono con maggiore frequenza e in combinazioni successive gli elementi più rari all’interno del file, mentre appaiono più raramente gli elementi più frequenti. In base al meccanismo descritto, ciò fa sì che gli elementi rari all’interno del file non compresso siano associati ad un codice identificativo lungo, che si accresce di un elemento ad ogni nuova associazione. Gli elementi invece che si ripetono più spesso nel file originale sono anche i meno presenti nell’albero delle associazioni, sicché il loro codice identificativo sarà il più breve possibile.
  • Viene generato il file compresso, sostituendo a ciascun elemento del file originale il relativo codice prodotto al termine della catena di associazioni basata sulla frequenza di quell’elemento nel documento di partenza.

Il guadagno di spazio al termine della compressione è dovuto al fatto che gli elementi che si ripetono frequentemente sono identificati da un codice breve, che occupa meno spazio di quanto ne occuperebbe la loro codifica normale. Viceversa gli elementi rari nel file originale ricevono nel file compresso una codifica lunga, che può richiedere, per ciascuno di essi, uno spazio anche notevolmente maggiore di quello occupato nel file non compresso.

Dalla somma algebrica dello spazio guadagnato con la codifica breve degli elementi più frequenti e dello spazio perduto con la codifica lunga degli elementi più rari si ottiene il coefficiente di compressione prodotto dall’algoritmo di Huffman. Da quanto detto si deduce che questo tipo di compressione è tanto più efficace quanto più ampie sono le differenze di frequenza degli elementi che costituiscono il file originale, mentre scarsi sono i risultati che si ottengono quando la distribuzione degli elementi è uniforme.

Software di compressione

Gli algoritmi indicati sono implementati in diversi software di compressione di uso comune. Il più noto è forse Winzip, che costituisce un vero e proprio punto di riferimento in questo ambito applicativo. Alternative forse leggermente meno note, comunque valide e diffusamente utilizzate sono, ad esempio Winrar, Winace e 7-zip, ma non solo (uharc, Stuffit…). Ci proponiamo ora di confrontare le alternative a disposizione, valutandone pregi e difetti.

Alternative a confronto

Per quanto riguarda il confronto tra software di compressione, prendiamo come principale riferimento la diffusa e interessante analisi proposta dal sito programmifree. Vengono infatti messi sotto esame diversi programmi, tra cui quelli sin qui citati, valutando il tasso di compressione e il tempo necessario per comprimere e decomprimere. Viene inoltre valutata la diversa efficacia dei vari software a seconda della tipologia di file che si desidera comprimere (video, audio, grafica, iso, documenti).

Tirando le somme, basandoci sull’estesa mole di test presentata tramite tabelle comparative, osserviamo innanzitutto come, dal punto di vista dei tempi di compressione, la scelta migliore sia probabilmente rappresentata da Winzip, avendo cura di attivare l’opzione Enhanced Deflate. Possiamo notare infatti come tale software garantisca, in rapporto agli altri, tempi di compressione relativamente brevi nel caso più significativo (ovvero per file di grosse dimensioni) e tempi di compressione comunque paragonabili agli altri software nel caso di file di dimensioni ridotte. In altre parole, Winzip rappresenta probabilmente la soluzione più pratica, adatta a un caso generico e a un utente senza particolari esigenze. Interessante anche, osservando i dati nel complesso, la scelta di Winrar, leggermente più lento ma significativamente più efficace nella compressione.

Nel caso invece, ad esempio, la necessità di comprimere file si applichi prevalentemente a file audio (vengono esaminati file con estensione .mp3, ma soprattutto .wav, di dimensioni magiori), risulta degno di nota proprio Winrar, che mette a disposizione un buon compromesso tra riduzione di spazio su disco e tempo di compressione. La scelta ottimale in questo caso sarebbe comunque di convertire, tramite appositi software di compressione, il file .wav in formati specifici, progettati appositamente per la compressione audio, che garantiscono una percentuale di compressione e una qualità non confrontabile con i software di compressione general-purpose fin qui citati. Tra questi formati più specifici citiamo .la (Lossless Audio) e .ofr (OptimFRog).

Per quanto riguarda le immagini e file di grafica, considerata l’enorme diffusione dei file in formato .jpg, probabilmente Stuffit è il programma di riferimento. La percentuale di compressione garantita da tale software è infatti in questo caso più di 15 volte migliore rispetto a tutti i rivali diretti, con tempi di esecuzione comunque accettabili.

Considerando la compressione di file di immagine (estensione .iso), Winrar, ancora una volta, garantisce un ottimo rapporto tra efficacia di compressione e rapidità di esecuzione. Una compressione ancora più efficace, ma a prezzo di una notevole attesa, è garantita da uharc e KGB. Osservazioni sostanzialmente analoghe possono essere applicate al processo di compressione di file eseguibili, anche se, in questo caso, è da sottolineare anche l’ottima performance di 7-zip.

Per quanto riguarda video e documenti, non emergono differenze particolarmente significative. I video sono una tipologia di file difficile da comprimere, mentre i documenti evidenziano un’ottima percentuale di compressione, ma si tratta di considerazioni generiche, valide per tutti i software testati. Da notare soltanto che, per quanto riguarda i documenti, in un contesto come già sottolineato di ottimo livello, forse sono uharc e Winace a trovarsi leggermente sotto la media.

Pubblicitร 

Leggi anche...

LIM: cos’รจ, come funziona e perchรฉ รจ importante per la didattica

Cos'รจ la LIM? Come funziona? E perchรฉ รจ considerata...

Significato del colore dei cuori su WhatsApp e Social

In un mondo dove la comunicazione digitale ha superato...

I migliori film sui videogiochi (che ogni gamer dovrebbe vedere)

Sin dagli anni 80 l'industria cinematografica ha iniziato ad...

Giochi nascosti in Google: quali sono e come trovarli

Molti di voi forse non si sono mai accorti...

Significato emoticon: le 100 emoji più utilizzate su Social e WhatsApp

Se sicuro di conoscere il vero significato delle emoticon...

Editor WYSIWYG: cosa sono, cosa fanno e come funzionano

WYSIWYG è un acronimo che significa "What You See...
Pubblicitร