LinuxovΘ noviny | Leden 1998 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mo╛nß jste si u╛ v╣imli, ╛e na serverech zrcadlφcφch zdrojovΘ texty jßdra z ftp.kernel.org se objevily novΘ soubory. Majφ zßhadnou p°φponu .bz2 a jsou podstatn∞ krat╣φ ne╛ soubory s klasickou p°φponou .gz. Jsou komprimovßny programem bzip2, jeho╛ autorem je Julian Seward (jseward@acm.org). Program bzip2 pou╛φvß p°i komprimaci Burrows-Wheeler∙v blokov∞-°adφcφ komprimaΦnφ algoritmus a Huffmanovo k≤dovßnφ. Komprimace je obvykle kvalitn∞j╣φ ne╛ p°i pou╛itφ klasick²ch algoritm∙ Lempel-Ziv (LZ77/LZ78), kterΘ pou╛φvß nap°. program gzip. Parametry programu bzip2 jsou velice podobnΘ parametr∙m programu gzip. Bzip2 oΦekßvß na p°φkazovΘ °ßdce seznam jmen soubor∙ doprovßzen² seznamem parametr∙. Ka╛d² soubor je stejn∞ jako u programu gzip nahrazen komprimovanou verzφ, jejφ╛ jmΘno obsahuje navφc p°φponu .bz2. Ka╛d² komprimovan² soubor mß stejnß p°φstupovß prßva a Φas modifikace jako p∙vodnφ soubor a proto mohou b²t tyto atributy souboru p°i dekomprimaci korektn∞ nastaveny. Pokud nejsou specifikovßny ╛ßdnΘ vstupnφ soubory, bude komprimovßn standardnφ vstup. Bunzip2 (p°φpadn∞ bzip2 -d) dekomprimuje v╣echny specifikovanΘ soubory s p°φponou .bz2. Soubory bez tΘto p°φpony jsou ignorovßny. Komprimace je provßd∞na i tehdy, bude-li komprimovan² soubor v∞t╣φ ne╛ originßl. Proto soubory, jejich╛ dΘlka je men╣φ ne╛ p°ibli╛n∞ 100 byt∙, nemß smysl komprimovat (jen tak pro zajφmavost: v²sledn² soubor po komprimaci souboru nulovΘ dΘlky mß velikost 14 byt∙). Bzip2 pou╛φvß 32-bitov² CRC pro kontrolu integrity dat. Pokud kontrolnφ suma nenφ sprßvnß, musφte pou╛φt mφsto programu bunzip2 program bzip2recover, kter² umo╛≥uje obnovu dat z po╣kozen²ch komprimovan²ch soubor∙. Bzip2 komprimuje velkΘ soubory v blocφch. Velikost bloku ovliv≥uje jak komprimaΦnφ faktor, tak i mno╛stvφ pot°ebnΘ pam∞ti jak pro komprimaci tak pro zp∞tnou dekomprimaci. Parametry p°φkazovΘ °ßdky -1 a╛ -9 specifikujφ velikost bloku (od 100000 do implicitnφch 900000 bajt∙). P°i dekomprimaci je velikost bloku Φtena z hlaviΦky komprimovanΘho souboru (ni╛╣φ Φty°i bity ΦtvrtΘho bytu souboru). Pam∞╗ovß nßroΦnost m∙╛e b²t p°ibli╛n∞ stanovena takto:
Pro soubory komprimovanΘ se standardnφ velikostφ bloku (900000 byt∙) bude bzip2 pot°ebovat p°ibli╛n∞ 4600 kilobyt∙ pam∞ti pro dekomprimaci. Aby bylo mo╛nΘ dekomprimovat soubory i na poΦφtaΦφch se 4MB pam∞ti, byla p°idßna volba -s, kterß sni╛uje na polovinu pam∞╗ovou nßroΦnost a zvy╣uje Φas dekomprimace. Tato volba existuje z d∙vod∙ neexistence virtußlnφ pam∞ti na podporovan²ch operaΦnφch systΘmech (unixovΘ operaΦnφ systΘmy, Microsoft Windows 95 a Windows NT, DOS). Asi nejΦast∞j╣φ otßzka poklßdanß na r∙zn²ch konferencφch byla: "Jak je na tom bzip2 v porovnßnφ s gzip?". Tuto otßzku si pravd∞podobn∞ polo╛φte takΘ a proto jsem pro Φtenß°e Linuxov²ch novin p°ipravil takov² mal² test, porovnßnφ obou zmi≥ovan²ch program∙. Zam∞°il jsem se hlavn∞ na dva aspekty - na kvalitu komprimace a na dobu komprimace a zp∞tnΘ dekomprimace. Testy probφhaly pouze na jedinΘm souboru - na zdrojov²ch textech jßdra 2.1.76 ve formßtu tar. P∙vodnφ velikost tohoto souboru byla 40867840 byt∙. V tabulce Porovnßnφ program∙ bzip2 a gzip jsou znßzorn∞ny hodnoty komprimaΦnφho pom∞ru v procentech (pom∞r dΘlka komprimovanΘho souboru ku dΘlce p∙vodnφho souboru) a Φas pot°ebn² k provedenφ komprimace. Testovacφm poΦφtaΦem mi byla pracovnφ stanice s procesorem Intel Pentium 133MHz, SCSI, 64MB RAM, Linux 2.0.33 a bzip2-0.1pl2.
Tabulka 1: Porovnßnφ program∙ bzip2 a gzip
Bli╛╣φ informace o programu bzip2 naleznete na jeho domovskΘ
strßnce http://www.muraroa.demon.co.uk/.
|