Nella frase di esempio si dimezza la dimensione iniziale, e stiamo operando su un oggetto decisamente piccolo. Inoltre, poiché le parole sono composte da lettere ripetute, si possono schematizzare con numeri aggregabili secondo criteri differenti per ridurre ulteriormente la dimensione. Si possono anche rintracciare sequenze contigue di informazioni (pattern) allo scopo di sfruttare ulteriormente la composizione del file per ridurre la ridondanza.
Utilizzando sistemi efficienti e accurati di scansione dei pattern, si rigenera la frase passando dalle parole (lunghe) a identificativi (corti). Riportando il ragionamento all’interno di un file composto da bit e byte, ciò comporta l’aggregazione di stringhe di dati in modo ricorsivo, ottenendo tabelle sempre più compatte di quelle iniziali.
Questo procedimento funziona se il rapporto di riduzione è elevato, ovvero se il file iniziale può essere compresso in modo efficace in base a numerosi elementi, tra cui il tipo, l’algoritmo utilizzato e lo schema dei dati. In un archivio compatto, i pattern sono disposti in modo non ridondante per definizione, quindi tentare un’ulteriore compressione può portare a risultati difficilmente apprezzabili, poiché le informazioni non sono duplicate e non si può attuare un efficace aggregamento.
Finora è stato descritto un sistema di tipo lossless, ovvero che non distrugge le informazioni presenti nel file per generare l’archivio compresso, ma trattate e aggregate al fine di ridurre le dimensioni totali. Generalmente questi metodi vengono utilizzati anche nei sistemi di comunicazione, dov’è importante comprimere le informazioni per non abusare della banda passante senza perdita di dati.
All’estremo opposto si trovano i sistemi lossy, cioè con perdita di informazioni, perché semplicemente eliminano stringhe di dati non ritenute necessarie al fine di ridurre l’occupazione. Questi algoritmi provocano la perdita irreparabile di bit e il caso tipico è quello dei formati per memorizzare immagini, video e brani musicali. Siccome all’interno di questi oggetti si trovano numerosi pattern differenti, si tenta di uniformarli accorpandoli in base a un campione di riferimento e approssimando quelli più simili.
Per esempio, in un’immagine bitmap le varie gradazioni del cielo azzurro vengono uniformate utilizzando un unico colore. I dati relativi a ciascun pixel sono poi memorizzati in una tabella, che viene utilizzata per ricreare il più possibile il valore iniziale. In un brano, i suoni nell’intorno di una determinata frequenza sono approssimati e in un video le zone con colore omogeneo vengono sostituite da bit dello stesso colore.
Con i sistemi lossy non è più possibile ottenere il file originario dopo che è stato trattato, perché molte informazioni sono andate perse, perciò questo sistema non è assolutamente indicato qualora si debbano gestire file contenenti informazioni essenziali.
Compressori sotto test Per la prova è stata utilizzata una cartella di 439 megabyte memorizzata sul disco fisso contenente file altamente comprimibili, per esempio immagini in formato bitmap, documenti, audio e video non compressi. Sensibili differenze sono evidenti non solo tra i vari formati, ma soprattutto nell’ambito del metodo ZIP, con risultati spesso sorprendenti. Il sistema di compressione integrato all’interno di Windows è quello che ha offerto le prestazioni peggiori in termini di efficienza, dato che l’archivio creato pesava addirittura 25,5 megabyte, ma è stato preso come riferimento per valutare il comportamento degli altri software.
Lo stesso risultato è stato ottenuto col metodo standard di Pentazip, e poco meglio sono andati Winzip con impostazioni normali. Nulla di stupefacente fin qui: XP offre un sistema di archiviazione e compressione adeguato alla maggiore parte delle esigenze con in più la comodità che, essendo integrato nel sistema operativo, è di facile e immediato utilizzo. Anche senza acquistare un software aggiuntivo, si possono ottenere file compressi con prestazioni tutto sommato di buon livello, dato che per completare l’operazione Windows ha richiesto circa 22 secondi.
Questo discorso acquista ancora maggiore importanza se si pensa che in modalità normale, Winzip, Winrar, Pentazip, Stuffit e Zip.it hanno raggiunto risultati poco migliori di quelli di Windows XP, ma con tempi di risposta sovente superiori. Poca cosa in questo ambito, ma che può portare a un allungamento dell’operazione in condizioni più complesse e con PC meno potenti di quello utilizzato. Infine, molto veloci sono stati Winzip e Zip.it, che pur utilizzando un algoritmo ZIP meno efficiente in virtù delle dimensioni del file finale, hanno completato l’operazione in una quindicina di secondi.
Pkzip, sempre in modalità normale, ha surclassato tutti i rivali. Il software, ideato inizialmente dal creatore dell’algoritmo ZIP, dimostra di avere potenzialità e funzionalità ben superiori a quelle delle alternative scaricabili dalla Rete, probabilmente perché gli sviluppatori hanno possibilità di ottimizzare in modo sostanziale il sistema di compressione.
Pkzip in modalità normale ha impiegato poco più di nove secondi per produrre un file di 16,8 megabyte, esattamente la stessa dimensione dell’archivio di Pentazip impostato con i massimi livelli di compressione (utilizzando tabelle a 64 bit), ma con tempi di risposta cinque volte più alti. La spiegazione di questo comportamento potrebbe essere nell’estrema efficienza del codice implementato in Pkzip, mentre gli altri lavorano su una versione tradizionale della procedura e apportano modifiche sviluppate in modo indipendente dai produttori dei software di compressione. Questa situazione si riflette anche se si imposta il livello massimo di archiviazione in Winrar e Winzip, che non riescono a scendere sotto i 23 megabyte con tempi di risposta superiori ai cinquanta secondi.
Un po’ troppo se si pensa che durante i test l’operazione è avvenuta in condizioni ottimali, con un PC dotato di configurazione piuttosto potente. Provando a cercare una spiegazione che aggreghi queste informazioni in modo significativo, il motivo per cui i software si comportano in modo differente è da imputare proprio al criterio su cui si basano per comprimere un file: la ridondanza delle informazioni. Partendo da un’unica procedura (ZIP) per comprimere e decomprimere i file, ciascun produttore ha utilizzato tabelle differenti per aggregare i dati e ottenere un migliore risultato finale.
A dimostrazione, si prenda Pentazip: con il metodo normale produce un file di oltre 25 megabyte, ma allo stesso livello di compressione, con una precisione a 64 bit, l’archivio finale diventa di poco più di 18 megabyte e impiega circa dieci secondi in meno per completare l’operazione.