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.

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

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

Velká podzimní aktualizace Windows 10 je tady: Co přináší Fall Creators Update

Velká podzimní aktualizace Windows 10 je tady: Co přináší Fall Creators Update

** Po půl roce je tu další aktualizace Windows ** A opět přináší hlavně hromadu drobných kosmetických vylepšení ** Podívali jsme se na ty nejzajímavější

17.  10.  2017 | Jakub Čížek | 186

Jak funguje největší akumulátor v Česku: podívejte se do elektrárny Dlouhé Stráně

Jak funguje největší akumulátor v Česku: podívejte se do elektrárny Dlouhé Stráně

** Přečerpávací vodní elektrárna Dlouhé stráně je obdivuhodné technické dílo ** Stejná turbína vyrábí elektřinu i tlačí vodu zpět do horního jezera ** Strojovna elektrárny je zabudována v podzemí

19.  10.  2017 | David Polesný | 23

Přichází doba hypersonických zbraní. Hrozí zvýšené riziko jaderného konfliktu

Přichází doba hypersonických zbraní. Hrozí zvýšené riziko jaderného konfliktu

** Světové mocnosti vyvíjí nové, nesmírně rychlé zbraně ** Jsou schopné pokořit rychlost Mach 5 ** Tyto zbraně mohou zvýšit riziko rozpoutání válečného konfliktu

19.  10.  2017 | Stanislav Mihulka | 20


Aktuální číslo časopisu Computer

Nový seriál o programování elektroniky

Otestovali jsme 17 bezdrátových sluchátek

Jak na nákup vánočních dárků ze zahraničí

4 tankové tiskárny v přímém souboji