Užitečné komponenty pro Delphi a C++ Builder, díl 78.

Dnes si nebudeme povídat o komponentách, ale zastavíme se nad tématem komprese souborů aplikace. Proto je to téma v zásadě vhodné pro každého, ať už programujete v čemkoliv.
Poněkud zamlžený úvod si hned vysvětlíme. Nebude řeč o komprimaci aplikace do podoby instalačního balíku, ale přímo o zmenšení výsledného exe souboru (a nejen toho). Známý problém při použití programovacích nástrojů jako Delphi je to, že i zcela "prázdný" program (tedy prázdný formulář) zabírá po kompilaci v podobě spustitelného exe souboru přes 300 kB. Pokud navíc máte rádi cizí vizuální komponenty, může velikost výsledného souboru rychle růst, aniž by program vlastně ještě něco uměl. A právě to se dá řešit komprimací výsledného souboru (ale například též dll knihoven a dalších součástí aplikace) pomocí speciálních nástrojů. Výsledkem takové úpravy je nový exe soubor (dll knihovna atd..), který má však znatelně menší velikost. Při jeho spuštění uživatel nic nepozná, protože program je v paměti počítače opět dekomprimován (příslušný mechanismus je součástí programu) a funguje stejně jako původní originál. U velkých aplikací se tak dá například zkrátit doba spouštění, nemluvě o úspoře místa na disku. Uspořené místo sice dnes již není takový problém, ale při přenosu souborů přes internet (nebo síť obecně) je každý ušetřený kB lepší než nic.

Jistě vás teď napadlo, že komprimuje-li se aplikace až po jejím vytvoření (tedy výsledný exe soubor), nic nám vlastně nebrání zkomprimovat si takto libovolnou aplikaci, kterou na disku máme a vůbec nepotřebujeme zdrojový kód. Ano, to je pravda a můžete si klidně zkomprimovat MS Office, když se vám bude chtít. Věděli jste například, že Word ve verzi XP (tedy jeho spustitelná exe část bez knihoven) má 10 MB?

Dost tedy vysvětlování. Představíme si teď dva nástroje, které se kompresí aplikací zabývají. První je zdarma a dnes uděláme výjimku a představíme si i jeden komerční produkt.

UPX 1.24

UPX neboli Ultimate Packer for eXecutables je zdarma, je výborný a proto je také velmi oblíbený. Nabízí vynikající kompresní poměr (často lepší než běžné kompresní programy) a rychlost při dekompresi. Je k dispozici nejen pro Windows (jako konzolová aplikace, viz. dále), ale i pro samotný DOS, Linux či Atari. Jak bývá v této kategorii zvykem, je k dispozici zdrojový kód.

Mezi podporované formáty pro kompresi patří nejen exe soubory a knihovny Windows, ale rovněž formáty Linuxu, DOSu a Atari, tedy vlastně stejné platformy, pro které UPX existuje. Detaily se dočtete na domovských stránkách projektu.

Jak jsem zmiňoval na začátku, pro prostředí Windows se jedná o konzolovou aplikaci. Nečekejte tedy žádné grafické uživatelské rozhraní, ale jednoduché textové okno příkazového řádku. Naštěstí není ovládání nijak složité, pro základní práci vám stačí znát asi tak tři parametry. Pro přesnější doladění komprese dle vašich požadavků pak najdete popis dalších možností v nápovědě, ale v základní konfiguraci vše funguje více než dostatečně a není třeba si dalšími parametry příliš lámat hlavu.

Malou srovnávací tabulku výsledného kompresního poměru naleznete na konci článku.

ASPack 2.12

ASPack je již komerční projekt, pocházející od společnosti ASPack Software. Jedná se již o běžnou Windows aplikaci, tedy obvyklé uživatelské rozhraní. Nepracuje však v jiných systémech než Windows. Chlubí se na stránkách kompresním poměrem až o 20% lepším než u formátu zip.

K použití není celkem co říci. Funkce jsou dostupné z přehledného a jednoduchého grafického rozhraní a tak je možná použitelnost o něco pohodlnější. Zatoužíte-li po tomto nástroji, zaplatíte si za osobní licenci pro nekomerční (!!) projekty $29, což je docela hodně.

Srovnání

Pro srovnání jsem zkomprimoval vždy s maximálním nastavením programu (s cílem dosáhnout co nejlepšího kompresního poměru) 3 aplikace. První je zmiňovaná "prázdná" aplikace, vytvořená v Delphi 7. Druhou testovací aplikací je o něco větší program rovněž vytvořený v Delphi, který používá řadu vizuálních komponent a má poměrně rozsáhlé uživatelské rozhraní. Třetí aplikace (kancelářská) je již opravdu velká. Takové doma zřejmě tvořit nebudete. :)

Zde je tedy srovnávací tabulka:

Klepněte pro větší obrázek

Obrázek o výkonu obou aplikací si můžete udělat sami. Jejich výsledky jsou velmi podobné. Musím na obranu ASPacku dodat, že volba "Maximální komprese" byla ve volně stažitelné verzi nedostupná. Dá se očekávat, že při maximální kompresi by se výsledky ještě zlepšily. Neporovnával jsem čas komprese, protože je to dle mého názoru zcela nepodstatná veličina. Takto budete programy komprimovat jen jednou (těsně před distribucí uživatelům) a tak nějaké rozdíly v řádu sekund nebo klidně i minut nehrají roli (na rozdíl od běžných komprimačních programů). Oba programy však pracovali velmi rychle. I onu velkou aplikaci 16 MB dokázali zkomprimovat za méně jak 1 minutu i na mém starším počítači. Dekomprese je pochopitelně dílem okamžiku.

Co říci závěrem? Komprese aplikačních souborů se nemusíte bát, umožní vám srazit původní velikost spustitelných souborů i knihoven na méně než polovinu a pro uživatele se nic nemění. Různých nástrojů, které to umí, je celá řada. Dnes jsme si představili dva nejlepší. Dosahují prakticky stejných výsledků a můj osobní favorit hlavně kvůli nulové ceně je UPX.

Diskuze (6) Další článek: Olympus E-1 - profesionální digitální zrcadlovka od Olympusu

Témata článku: Software, Windows, Programování, Díl, Spustitelný soubor, Atari, Nepodstatný parametr, Výsledné dílo, Uživatelské rozhraní, Textové okno, Běžná aplikace, Komponenta, Srovnávací tabulka


Určitě si přečtěte

Moral machine: Už víme, zdali je lepší zabít psy, sebe nebo matky na přechodu

Moral machine: Už víme, zdali je lepší zabít psy, sebe nebo matky na přechodu

** Jak byste se sami vypořádali s tramavajovým dilematem? ** Vědci před lety spustili globální dotazník ** Nyní se pochlubili s výsledky

Jakub Čížek | 150

Tesla v režimu autopilota nabourala do stojícího auta, majitel podává žalobu

Tesla v režimu autopilota nabourala do stojícího auta, majitel podává žalobu

** Tesla Model S nabourala na dálnici do stojícího auta ** V tu chvíli jela v režimu autopilota, zatímco řidič odpočíval ** Hudson nyní žaluje Teslu, že slibuje něco, co neplní

Karel Kilián | 97

Vybrali jsme 16 programovatelných hraček a stavebnic pro děti. A vlastně i pro vás

Vybrali jsme 16 programovatelných hraček a stavebnic pro děti. A vlastně i pro vás

** Získejte děti pro matematiku a základy techniky ** Kupte jim hračku nebo stavebnici, které vdechnou vlastní život ** Vybrali jsme 16 stavebnic pro nejmenší caparty i vás samotné

Jakub Čížek | 12

Chytré prkno Mui a dalších šest projektů z Kickstarteru, které nejsou úplně pitomé

Chytré prkno Mui a dalších šest projektů z Kickstarteru, které nejsou úplně pitomé

** Kickstarter je plný neúspěšných projektů ** A pak tam jsou ty, které splnily cíl hned několikanásobně ** Tyto patří k těm nejúspěšnějším za poslední dva měsíce

Jakub Čížek | 16



Aktuální číslo časopisu Computer

Nejlepší programy pro úpravu fotek zdarma

Externí disky pro zálohu dat

Velký test: herní notebooky

Srovnání 12 batohů