You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Un complesso<br />
sistema PD per<br />
comprimere i dati<br />
li algoritmi di compressione dei<br />
dati hanno trovato, in campo<br />
informatico, un vasto utilizzo,<br />
soprattutto da quando la potenza dei<br />
processori ha consentito di impiegar-<br />
ne alcuni sofisticati, mantenendo co-<br />
munque relativamente bassi i tempi di<br />
elaborazione. Con il tempo, è apparso<br />
evidente che la compressione dei dati<br />
poteva trovare applicazioni nei campi<br />
più disparati, dai programmi di archi-<br />
viazione agli eseguibili. Da questa evi-<br />
denza e dall'inventiva di alcuni pro-<br />
grammatori tedeschi, è nato external<br />
PaKer. o XPK.<br />
La filosofia di XPK<br />
XPK è nato come strumento per per-<br />
mettere ai programmi di salvare e cari-<br />
care dati compressi senza doversi<br />
preoccupare di implementare un algo-<br />
ritmo particolare. In questo modo si è<br />
ottenuto un duplice risultato: l'aumento<br />
delle applicazioni che salvano e cari-<br />
cano dati compressi e la comparsa di<br />
molte librerie XPK che implementano<br />
algoritmi più o meno efficienti.<br />
XPK è costituito da comuni librerie, or-<br />
ganizzate su tre livelli distinti di funzio-<br />
namento. Il livello inferiore è rappre-<br />
sentato da una serie di piccole librerie<br />
contenute nella directory "compres-<br />
sors" in Libs:; il loro nome è costituito<br />
dal prefisso "xpk" seguito da quattro<br />
lettere. Queste librerie contengono il<br />
codice dell'algoritmo di compressione,<br />
e il loro compito consiste nell'eseguire<br />
tre operazioni: comprimere e decom-<br />
primere i dati in memoria utilizzando<br />
ALLA SCOPERTA DI XPK<br />
gli algoritmi che sono loro pro-<br />
pri e fornire informazioni su se<br />
stesse.<br />
Queste librerie non sono mai<br />
utilizzate direttamente dalle<br />
applicazioni, ma vengono<br />
chiamate secondo necessità<br />
dalla "xpkmaster.library", che<br />
rappresenta il livello superiore.<br />
L1xpkmaster.library si premura<br />
di fornire all'applicazione<br />
un'interfaccia flessibile verso<br />
le librerie inferiori: per esem-<br />
pio, può leggere i dati da un fi-<br />
le, comprimerli o decompri-<br />
merli attraverso le sotto-librerie<br />
citate e scriverli in un altro file.<br />
L'applicazione si limiterà in<br />
questo a caso a fornire solo i<br />
nomi dei file in questione e I'al-<br />
goritmo, prescelto tra quelli di-<br />
sponibili.<br />
In fase di decompressione,<br />
xpkmaster.library riconosce<br />
automaticamente quale sotto-<br />
libreria è stata utilizzata per<br />
comprimere i dati, sollevando<br />
l'applicazione che l'utilizza da<br />
qualsiasi responsabilità in me-<br />
rito. Il sistema è semplice, e al<br />
contempo enormemente fles-<br />
sibile: è possibile infatti espan-<br />
dere indefinitamente il set di<br />
sotto-librerie, ottenendo alla fi-<br />
ne una rosa di algoritmi vera-<br />
mente vasta.<br />
Il terzo livello è quello di<br />
xpkarchive.library, che, come<br />
il nome suggerisce, lavora su-<br />
gli archivi, ovvero su gruppi di<br />
file compressi raccolti in un u-<br />
nico file. In genere è poco uti-<br />
lizzata.<br />
Gli algoritmi<br />
di tompressione<br />
Il cuore di XPK sono le sotto-li-<br />
brerie. Ognuna di esse imple-<br />
menta un algoritmo di com-<br />
pressione, generalmente scrit-<br />
QII algorltml dl XPK testa21<br />
con an fllr blnarlo<br />
Algoritmi ordinati per percentuale di compressione (ratio)<br />
SHRI<br />
GZIP<br />
MASH<br />
NUKE<br />
R AKE<br />
IMPL<br />
PWPK<br />
RDCN<br />
FAST<br />
BLZW<br />
HFMN<br />
RLEN<br />
CBRO<br />
Algoritmi ordinati per velocità di compressione<br />
CBRO<br />
RLEN<br />
FAST<br />
HFMN<br />
RDCN<br />
RAKE<br />
BLZW<br />
MASH<br />
NUKE<br />
PWPK<br />
IMPL<br />
GZIP<br />
SHRI<br />
3.065 kbls<br />
3.065 kbls<br />
1.666 kbls<br />
1.630 kbls<br />
1.321 kbls<br />
584 kbls<br />
507 kbls<br />
381 kbls<br />
199 kbls<br />
186 kbls<br />
122 kbls<br />
91 kbls<br />
50 kbls<br />
Algoritmi ordinati per velocità di decompressione<br />
CBRO<br />
RLEN<br />
FAST<br />
RDCN<br />
NUKE<br />
RAKE<br />
MASH<br />
PWPK<br />
IMPL<br />
BLZW<br />
HFMN<br />
GZIP<br />
SHR<br />
8.513 kbls<br />
6.965 kbls<br />
5.894 kbls<br />
4.257 kb/s<br />
3.331 kbls<br />
3.193 kbls<br />
2.189 kbls<br />
1.782 kbls<br />
1.666 kbls<br />
1.666 kbls<br />
1.144 kbls<br />
1 .O95 kbls<br />
198 kbls