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.
Užitečné komponenty pro Delphi a C++ Builder, díl 78.
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í, Atari, Spustitelný soubor, Uživatelské rozhraní, Komponenta, Běžná aplikace, Nepodstatný parametr, Výsledné dílo, Díl

6 komentářů

Nejnovější komentáře

  • Jiri Cincura 29. 6. 2003 23:37:22

    Presna tak. Pokud mam aplikaci do 1MB, je treba si rict, zda je treba...

  • Jan Fiala 26. 6. 2003 22:13:26
    Jen bych dodal, ze s ASPackem jsou problemy na WinXP. Nekdy se takto...
  • Jan Fiala 26. 6. 2003 22:11:49
    Sprava souboru ve Windows pracuje s programy tak, ze se do pameti natahne...
Určitě si přečtěte

Jak převést PDF do Wordu: 3 způsoby, které můžete použít

Jak převést PDF do Wordu: 3 způsoby, které můžete použít

** Využít můžete přímo Word v rámci balíčku Office ** Zdarma lze využít Google Dokumenty, neporadí si ale s formátováním ** Obrátit se také můžete na specializované stránky

11.  8.  2017 | Vladislav Kluska | 9

USB zařízení je možné odposlouchávat ze sousedního portu

USB zařízení je možné odposlouchávat ze sousedního portu

** Crosstalk byl dřív problém paralelních portů, dnes se ho pokusili prověřit na USB ** Zařízení ze sousedního USB portu může odposlouchávat to vedlejší ** Mohou vznikat záškodnické flašky nebo třeba USB lampičky

14.  8.  2017 | Adam Harmada | 18

Zrušený evropský roaming je brutální vražda virtuálních operátorů

Zrušený evropský roaming je brutální vražda virtuálních operátorů

** Když EU rušila roaming, šla přes mrtvoly ** Tou největší jsou virtuální operátoři ** Vlastně je překvapivé, že už nepadají jeden po druhém

12.  8.  2017 | Filip Kůžel | 85

Obrněná raketová vozidla Stryker budou bojovat proti dronům a letadlům

Obrněná raketová vozidla Stryker budou bojovat proti dronům a letadlům

** Původně kanadská obrněná bojová vozidla Stryker od společnosti General Dynamics existují v celé řadě verzí ** Některá slouží k průzkumu, jiná jsou vybavena těžkými zbraněmi ** Nyní bylo představeno nové raketové vozidlo Stryker, které je vyzbrojeno raketami Sidewinder a Hellfire

11.  8.  2017 | Stanislav Mihulka | 1


Aktuální číslo časopisu Computer

Velký test NVMe a SATA SSD

Máte slabý signál
Wi-Fi? Poradíme!

Jak umělá inteligence opravuje fotky

Kupujete dron? Ty levné se nevyplatí