Projekt Pack se pokusil vytvořit formát pro archivaci souborů, založený na knihovně SQLite a algoritmu komprese ZSTD (Zstandard). Připravený prototyp, napsaný v jazyce Pascal a distribuovaný pod licencí Apache 2.0, překonal v rychlosti vytváření archivu nejrozšířenější archivační nástroje, přičemž jeho práce spočívala v čtení dat, kompresi knihovnou libzstd a provádění SQL operací pro přidávání komprimovaných dat do souboru s databází SQLite.
Při kompresi adresáře se 81 tisíci souborů o celkové velikosti 1,25 GB byl pack rychlejší než utilita ZIP v poměru 112:1, když dokončil operaci za 1,3 sekundy oproti 146 sekundám potřebným pro ZIP. Velikost archivu byla přitom u pack o 23 % menší (194 MB u Pack a 253 MB u ZIP). Pro srovnání utilita tar zabalila data za 4,7 sekundy bez komprese a za 28,5 sekundy se kompresí metodou gzip, archivační nástroj RAR zvládl test za 27,5 sekundy, zatímco 7z za 54,2 sekundy. Velikosti archivů byly: tar.gz — 214 MB, RAR — 235 MB, 7z — 135 MB. Bylo zjištěno, že podle rychlosti dekomprese a náhodného přístupu k souborům pack také předčí ostatní archivační nástroje, přičemž spotřebovává méně operační paměti. ZIP: 253 MB, 146 s 7z: 135 MB, 54,2 s rychlejší než ZIP 2,7x tar.gz: 214 MB, 28,5 s x 5,1 RAR: 235 MB, 27,5 s x 5,3 tar: 1345 MB, 4,7 s x 31 Pack: 194 MB, 1,3 s x 112
O vlivu souborového cache na výsledky testování se nezmiňuje. Pravděpodobně je nízká rychlost ZIP dána pořadím spuštění testů bez ohledu na cachování dat v paměti — test s zip byl spuštěn při studeném cache, zatímco ostatní testy byly provedeny při warm-up cache. Za běžných podmínek Zstandard vykazuje 3-5x vyšší rychlost komprese než zlib a dvakrát rychlejší dekompresi, přičemž úroveň komprese je o 10-15 % vyšší.
Dodatek: Podobná myšlenka uchovávání komprimovaných souborů ve formě blobů v databázi SQLite byla v roce 2014 realizována v archivačním nástroji sqlar, který byl vytvořen vývojáři SQLite jako experiment pro posouzení efektivity uchovávání blobů v SQLite. V sqlar se pro kompresi používá zlib a velikost souborů je přibližně o 2 % větší než u utilit ZIP.
Zdroj: opennet.ru
