V nadtitulku uvedenΘ skratky maj· spoloΦnΘ dve veci - prvou je autor Markus F. X. J. Oberhumer a druhou je, ₧e vÜetky tieto programy s· tzv. komprimaΦnΘ programy, resp. kni₧nice, t. j. m⌠₧ete ich podobne ako RAR, ZIP pou₧i¥ na komprimovanie binßrnych, textov²ch Φi in²ch ╛ubovo╛n²ch dßt.
LZO
LZO je dßtovß kompresnß kni₧nica, ktorß je urΦenß pre kompresiu, resp. dekompresiu dßt v reßlnom Φase. Pomenovanie LZO pochßdza zo slov Lempel-Ziv-Oberhumer. Kni₧nica LZO bola napφsanß v jazyku ANSI C. Zdrojov² k≤d a kompresn² dßtov² formßt s· navrhnutΘ tak, aby mohli by¥ portovanΘ aj na inΘ platformy. K dneÜnΘmu d≥u s· na strßnke www.oberhumer.com/opensource/lzo k dispozφcii zdrojovΘ k≤dy v jazykoch Perl (verzia 1.08), Python (verzia 1.08), ANSI C (verzia 1.08) a Java (verzia 1.0). V LZO je implementovan²ch nieko╛ko algoritmov s nasledovn²mi funkciami:
jednoduchß a ve╛mi r²chla dekompresia;
pre dekompresiu nie je potrebnß pamΣ¥;
pomerne r²chla kompresia;
pre kompresiu je potrebnß pamΣ¥ 64 Kb;
bezpeΦn² algoritmus;
bezstratov² algoritmus.
Kni₧nica LZO a LZO algoritmus s· distribuovanΘ pod licenciou GNU General Public License (GPL). Ak chcete zφska¥ Üpecißlnu licenciu pre komerΦnΘ pou₧itie, treba kontaktova¥ autora. Kni₧nica LZO bola kompilovanß a testovanß na rozmanit²ch platformßch, napr. DOS (16 + 32 bit), Windows 3.x (16-bit), Windows 95/98/ME/NT/2000/XP, Linux, HP-UX a DEC Alpha (64-bit). LZO tie₧ pracuje pod AIX, AmigaOS, ConvexOS, FreeBSD, IRIX, Mac OS, Mac OS X, NetBSD, Nintendo64, Palm OS (Pilot), PSX (Sony PlayStation), OpenBSD, Solaris, SunOS, TOS (Atari ST) a VxWorks.
Ako prφklad uvßdzam Φasy nameranΘ na mojom starom Pentiu 133:
memcpy(): ~60 MB/s;
LZO1X dekompresia v jazyku C: ~16 MB/s;
LZO1X dekompresia v optimalizovanom assembleri: ~20 MB/s;
LZO1X-1 kompresia: ~5 MB/s.
Okrem toho m⌠₧ete na citovanej strßnke nßjs¥ tzv. miniLZO, predstavuj·ce podskupinu, resp. Φas¥ funkciφ kni₧nice LZO. Po rozbalenφ zdrojov²ch k≤dov m⌠₧ete tieto skompilova¥ naprφklad takto:
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
compressed 102400000 bytes into 401581 bytes
decompressed 401581 bytes back into 102400000 bytes
miniLZO simple compression test passed.
V prφpade, ₧e chcete tento prφklad skompilova¥ pomocou Visual C++ 6.0, treba namiesto prφkazu make pou₧i¥ prφkaz nmake s parametrom visualc, teda nmake visualc.
LZOP
LZOP je s·borov² kompresor, ktor² je ve╛mi podobn² programu gzip (www.gzip.org).
Pre kompresiu pou₧φva kompresn· kni₧nicu LZO DATA. Medzi v²hody oproti programu gzip patrφ ve╛kß kompresia a r²chla dekompresia (avÜak za cenu pomerne ve╛kΘho kompresnΘho pomeru). LZOP je distribuovan² pod licenciou GNU General Public License (GPL). To, ₧e LZOP je r²chly kompresor a dekompresor, ukazuje aj tab. 1. Vo vΣΦÜine prφpadov LZOP jasne vedie pred svojimi konkurentmi.
LZOP bol naprojektovan² s nasledovn²mi zßmermi:
r²chlos¥ (pri kompresii aj dekompresii);
primeranß kompatibilita s gzip;
prenosite╛nos¥.
HlavnΘ rozdiely medzi LZOP a gzip:
S·bory komprimovanΘ pomocou LZOP s· zakonΦenΘ prφponou LZO.
LZOP Ütandardne nevyma₧e vstupn² s·bor.
NRV
Pomenovanie NRV pochßdza zo slov Not Really Vanished. NRV je bezstratovß dßtovß kompresnß kni₧nica napφsanß v jazyku C++, ktorß pon·ka r²chlu kompresiu a ve╛mi r²chlu dekompresiu. Pri dekompresii nie je potrebnß pamΣ¥. NRV naviac obsahuje pomalΘ stupne kompresie, pomocou ktor²ch dosiahnete v²born² kompresn² pomer, hoci predsa len dekompresia mß ve╛mi vysok· r²chlos¥.
Funkcie:
NRV kompresn² pomer je typicky lepÜφ ako kompresn² pomer zip, pkzip alebo gzip.
NRV dekompresia na mojom Intel Pentiu 133 dosahuje 13 MB/s.
NRV k≤d dekompresora m⌠₧e by¥ menÜφ ako 200 bajtov.
NRV nepotrebuje ₧iadnu dodatoΦn· pamΣ¥ pre dekompresiu - ani priestor na zßsobnφku.
NRV je zßklad ve╛mi komplikovanΘho kompresnΘho prostriedku (compression engine), ktor² dovolφ jednoduch· adaptßciu pre Üpecißlne algoritmy a inΘ po₧iadavky.
NRV je ideßlne rieÜenie pre embedded systems (vlo₧enΘ systΘmy) a podobnΘ miesta.
Kni₧nica NRV je navrhnutß tak, aby pracovala na 16-bitov²ch systΘmoch (ako je DOS, Windows 3.1, Atari ST a Pilot Palmtop) a tie₧ na 32-bitov²ch a 64-bitov²ch strojoch (ako Unix, VxWorks, Mac, Win32, BeOS, OS/2, 32-bit DOS extenders, Sony Playstation, Nintendo 64...).
UCL
UCL (UCL Compression Library) je bezstratovß dßtovß kompresnß kni₧nica napφsanß v jazyku ANSI C. UCL implementuje nieko╛ko kompresn²ch algoritmov, Φφm sa dosiahne vynikaj·ci kompresn² pomer a ve╛mi r²chla dekompresia. Dekompresia nepotrebuje ₧iadnu dodatoΦn· pamΣ¥. UCL je open source reimplementßcia kompresnΘho algoritmu NRV. Ak UCL porovnßme s LZO, UCL algoritmus dosahuje lepÜφ kompresn² pomer, ale dekompresia je pomalÜia. Na mojom Pentiu 133 s nej boli dosiahnutΘ tieto Φasy:
memcpy(): ~60 MB/s;
UCL dekompresia v optimalizovanom assembleri: ~13 MB/s;
LZO dekompresia v optimalizovanom assembleri: ~20 MB/s;
LZO dekompresia v jazyku C: ~16 MB/s;
UPX
UPX (Ultimate Packer for eXecutables) je vo╛n², vysoko v²konn² kompresn² program pre kompresiu viacer²ch rozdielnych spustite╛n²ch formßtov (podrobn² preh╛ad nßjdete v tab. 3). Poslednß stabilnß verzia programu UPX je oznaΦenß 1.2.4 a nßjdete ju na strßnke http://upx.sourceforge.net. Kvality programu UPX mo₧no charakterizova¥ dvomi vlastnos¥ami - excelentn²m kompresn²m pomerom a ve╛mi r²chlou dekompresiou. UPX je chrßnen² licenciou GPL a pre kompresnΘ slu₧by pou₧φva kompresn· kni₧nicu NRV. AvÜak kompatibilita tak trochu menej ·Φinnej implementßcie open source je dosahovanß prostrednφctvom kompresnej kni₧nice UCL. UPX existuje v nasleduj·cich variantoch: Win32 console version, 32-bit DOS version, Atari version, precompiled Linux version, source code (kv⌠li kompilßcii vÜak budete potrebova¥ kompresn· kni₧nicu UCL). U₧φvatelia Windows uprednost≥uj· verziu Win32, preto₧e lepÜie podporuje dlhΘ nßzvy s·borov. Pre Windows 95/98/Me/NT/2000/XP sa vyvφja ve╛mi peknΘ grafickΘ rozhranie (GUI graphical frontends). AvÜak u₧ existuje (z inej dielne) funkΦnΘ grafickΘ GUI rozhranie, ktorΘ vytvoril pßn Dirk Paehl. Aktußlnu verziu programu nßjdete na domovskej strßnke www.dpaehl.de. Toto grafickΘ rozhranie, aktußlne dostupnΘ vo verzii 1.2.6 (obr. 1), mß pou₧φvate╛om u╛ahΦi¥ ovlßdanie programu UPX. Grafickß nadstavba mß v sebe vstavan² program UPX verzie 1.2.4, avÜak mßte mo₧nos¥ si zvoli¥ aj extern· verziu programu UPX. To pre prφpad, ₧e autor uvolnφ novÜiu verziu.
V tab. 2 nßjdete nieko╛ko prφkladov, pod╛a ktor²ch m⌠₧ete pos·di¥ schopnosti UPX.
Zßver
UvedenΘ kni₧nice a kompresnΘ programy sa vyznaΦuj· ve╛mi r²chlou kompresiou a dekompresiou a urΦite sami nßjdete mnohΘ oblasti, kde by sa dali vyu₧i¥. Pokia╛ vßs niektorß z t²chto kompresn²ch met≤d zaujala, vedzte, ₧e vÜetky uvedenΘ kompresnΘ programy a kni₧nice nßjdete na Chip CD. Osobne doporuΦujem vysk·Üa¥ UPX.