LZX 1.00 Kamil Iskra Przez dîugie lata pozycja LhA, jako najczëôciej uûywanego archiwizera na Amidze, wydawaîa sië nienaruszalna. Nadszedî jednak dzieï 12 lutego 1995 roku, kiedy to w Aminecie pojawiî sië program LZX i zatrzâsî "systemem wartoôci" wielu posiadaczy Amigi. LhA to dobry program kompresujâcy. Jest doôê szybki i ma wiele przydatnych opcji, jednak jego skutecznoôê, tj. stopieï kompresji, nikogo juû dzisiaj nie wprawia w zdumienie. Program jest po prostu stary! Nowe wersje nie ukazujâ sië juû od niemal dwóch lat. Ostatnio, co prawda, krâûâ pogîoski o majâcej sië ukazaê wersji 3., ale czy sâ one prawdziwe? Niektórzy nie lubiâ stagnacji. Takim czîowiekiem jest Jonathan Forbes, który stworzyî program LZX. Czîowiek ten ma bogate doôwiadczenie w tworzeniu archiwizerów, jest autorem popularnych niegdyô programów LZ i LX, uûywajâcych algorytmów znanych z póúniejszego LhA. Archiwum z programem znajduje sië w katalogu "util/arc" i zajmuje 128 KB. Po rozpakowaniu znajdujemy w katalogu "LZX" dokumentacjë w standardzie AmigaGuide oraz sam program, w trzech wersjach -- dla procesorów MC68000-010, MC68020-030 oraz MC68040-060. LZX przypomina pod wieloma wzglëdami program LhA. Obsîuga obu programów jest niemal identyczna, takie same sâ "skróty" wiëkszoôci komend i opcji. To chyba zaleta, bo nie trzeba sië wszystkiego uczyê od nowa. Dokumentacja jest napisana doôê zwiëúle, ale w wystarczajâcym stopniu opisuje kaûdâ opcjë. To, co wyróûnia LZX spoôród innych programów kompresujâcych, to jego skutecznoôê. Osiâgniëto jâ dziëki nowatorskiemu algorytmowi, zwanemu file merging, czyli îâczenie plików. Polega on na tym, ûe w procesie kompresji krótkie pliki sâ najpierw îâczone ze sobâ, a dopiero póúniej kompresowane. Moûe to poprawiê skutecznoôê kompresji o kilkadziesiât procent! A jeûeli îâczone pliki sâ podobne do siebie, to stopieï kompresji bywa jeszcze lepszy. Przykîadem moûe byê sam LZX. Jak pisaîem, jest on rozpowszechniany w trzech wersjach, które, rzecz jasna, nie róûniâ sië od siebie w zasadniczy sposób. Oto, co jest w stanie zrobiê z nimi LhA: Listing of archive 'LZX.lha': Original Packed Ratio Date Time Name -------- ------- ----- --------- -------- ------------- 63148 35279 44.1% 05-Feb-95 22:43:02 LZX_68000EC 60996 34200 43.9% 05-Feb-95 22:42:08 LZX_68020 61000 34222 43.8% 05-Feb-95 22:42:26 LZX_68040 -------- ------- ----- --------- -------- 185144 103701 43.9% 18-Feb-95 18:53:48 3 files A oto wyniki LZX: Viewing archive 'LZX.lzx': Original Packed Ratio Date Time Name -------- -------- ----- --------- -------- ----------- 61000 merged n/a 05-Feb-95 22:42:26 LZX_68040 60996 merged n/a 05-Feb-95 22:42:08 LZX_68020 63148 merged n/a 05-Feb-95 22:43:02 LZX_68000EC 185144 46962 25.3% -------- -------- ----- --------- -------- 185144 46962 25.3% 18-Feb-95 18:55:38 3 file(s) Czyû róûnica nie jest szokujâca? Radzë nie patrzeê na "procenty", bo programy wyliczajâ je w róûny sposób: LZX podaje stosunek wielkoôci pliku skompresowanego do oryginalnego, LhA "100" minus ten stosunek. Moûe przedstawië jeszcze kilka testów (przeprowadziîem je na mojej A1200 wyposaûonej w 6 MB RAM). Dysk "Workbench3.0" skopiowany do RAM:, oba programy wywoîane z opcjami "-e -F -r" (archiwizuj puste katalogi, nie przewijaj konsoli, aby nie faîszowaê tym wyników, przyspiesza to poza tym znacznie caîy proces, archiwizuj zawartoôê podkatalogów). LhA: czas archiwizacji 51 sek, rozmiar archiwum 402421 bajtów. LZX: czas archiwizacji 42 sek, rozmiar archiwum 344912 bajtów. Chciaîbym teû pokazaê, ûe moc tego programu tkwi nie tylko w îâczeniu plików. Ma on teû bardzo dobre procedury kompresujâce. Przykîadem niech bëdzie plik "cc1plus" o rozmiarze 1440868 bajtów (jest to kompilator jëzyka C++, wchodzâcy w skîad pakietu GNU CC 2.6.3 dla procesora MC68000). LhA: czas archiwizacji 111 sek, rozmiar archiwum 682493 bajty. LZX: czas archiwizacji 86 sek, rozmiar archiwum 586044 bajty. Jednak, jak to zwykle bywa, nie wszystko w LZX jest cudowne. Îâczenie plików, tak poprawiajâce kompresjë, ma teû pewne wady. Jeûeli chcemy rozarchiwizowaê tylko jeden plik, to program i tak musi rozpakowaê najpierw caîy blok poîâczonych plików, co úle wpîywa na prëdkoôê. Przy dodawaniu pojedynczych plików do istniejâcego juû archiwum sâ one kompresowane z osobna (bez îâczenia z juû istniejâcymi), przez co skutecznoôê sië pogarsza. Moûna jâ poprawiê przez rozarchiwizowanie caîego archiwum i jego ponownâ archiwizacjë, ale to oczywiôcie chwilë trwa... LhA archiwizuje pliki elegancko, w kolejnoôci alfabetycznej. LZX wydaje sië archiwizowaê je "jak popadnie" -- moûe jest to zwiâzane z îâczeniem plików. Bardziej denerwujâcâ wadâ jest to, ûe chcâc np. zarchiwizowaê zawartoôê katalogu "C", trzeba napisaê: LZX -r a ram:archiwum C/* W innych archiwizerach amigowskich nie jest potrzebne podawanie tego "/*", np. dopisaîem obsîugë LZX do programu GuiArc (jak zapewne Czytelnikom wiadomo, jest to uniwersalna "okienkowa" nakîadka na dowolne archiwizery -- ich obsîugë definiuje sië w pliku "ArcTypes"). Niestety, obsîuga LZX nie dziaîa poprawnie -- nie moûna archiwizowaê katalogów -- wîaônie ze wzglëdu na powyûszy niestandardowy wymóg programu. Opcje moûna teû podawaê jedynie przed komendami (tzn. naleûy pisaê "lzx -r a", a nie "lzx a -r"). To akurat bardzo mnie zdenerwowaîo, bo przyzwyczaiîem sië przy LhA pisaê na odwrót. Wydaje sië jednak, ûe jest to po prostu bîâd programu, bo zgodnie z dokumentacjâ opcje moûna podawaê gdziekolwiek w linii argumentowej. Nie jest to zresztâ jedyna niezgodnoôê z dokumentacjâ: wedîug niej przy listowaniu zawartoôci archiwum powinien sië znajdowaê w polu "Packed" (patrz zamieszczony wczeôniej listing) rozmiar plików po kompresji, dla plików îâczonych przybliûony, tymczasem dla takich plików jest tam wyôwietlane "merged". Innâ wadâ jest teû to, ûe nie moûna îâczyê opcji, tzn. chcâc podaê opcje "-e" i "-r", naleûy napisaê "lzx -e -r", a nie moûna napisaê "lzx -er" -- to teû jest dla mnie doôê denerwujâce, bo w LhA moûna tak robiê, moûna tak teû robiê w komendach systemu Unix, z którego caîy ten jednoliterowy styl podawania argumentów (zresztâ, moim skromnym zdaniem, nonsensowny) pochodzi. Wszystkie te wady sâ jednak îatwe do usuniëcia, nie naleûy zapominaê, ûe opisujë pierwszâ wersjë programu. Napisaîem wczeôniej, ûe autorem programu jest Jonathan Forbes. Nie jest to w peîni prawda: autorów jest dwóch, drugim jest Tomi Poutanen, który zajmuje sië tworzeniem wersji dla pecetów (ukaûe sië ona póúniej od amigowej, bo autor musi najpierw obejôê róûnorakie intelowe prymitywizmy w stylu 64-kilobajtowych bloków pamiëci). LZX, tak samo jak LhA, jest programem shareware. Cena programu jest doôê wysoka i wynosi 25$ USA. Czy program jest tego wart? Chyba tak, sâdzë jednak, ûe warto poczekaê i zobaczyê, czy program sië "przyjmie", tj. czy stanie sië standardem kompresji. Z ostatniej chwili: pojawiîa sië juû wersja 1.01, w której poprawiono wiëkszoôê bîëdów wersji opisywanej. Z autorami moûna sië skontaktowaê pod adresem: Data Compression Technologies 383 Lawrence Avenue West Toronto, Ontario M5M 1B9 Canada E-mail: jonathan.forbes@canrem.com LZX1.00 typ: archiwizer autor: Jonathan Forbes uniwersalnoôê: 10/10 prostota obsîugi: 7/10 wyglâd: n/d jakoôê dziaîania: 8/10 ogólnie: 8/10