Проект Pack зробив спробу створення формату для архівування файлів, побудованого на базі бібліотеки SQLite та алгоритму стиснення ZSTD (Zstandard). Підготовлений прототип, написаний мовою Pascal і що розповсюджується під ліцензією Apache 2.0, обігнав за швидкістю створення архівів найбільш поширені архіватори, при тому, що його робота зводилася до читання даних, стиснення бібліотекою libzstd і виконання SQL-операцій з додавання стислих даних SQLite.
При стисненні каталогу з 81 тисяч файлів, загальним розміром 1.25 ГБ, pack виявився швидше утиліти ZIP в 112 разів, виконавши операцію за 1.3 секунди проти 146 секунд у ZIP. Розмір архіву при цьому у pack вийшов на 23% менше (194 MB у Pack та 253 MB у ZIP). Для порівняння утиліта tar виконала упаковку за 4.7 секунд без стиснення і за 28.5 секунд зі стисненням методом gzip, архіватор RAR впорався з тестом за 27.5 секунд, а 7z за 54.2 секунди. Розмір архівів становив: tar.gz - 214 MB, RAR - 235 MB, 7z - 135 MB. Зазначається, що за швидкістю розпакування та випадкового доступу до файлів Pack також випереджає інші архіватори, споживаючи при цьому менше оперативної пам'яті. ZIP: 253 MB, 146 s 7z: 135 MB, 54.2 s швидше ZIP в 2.7 рази tar.gz: 214 MB, 28.5 sx 5.1 RAR: 235 MB, 27.5 sx 5.3 tar: 1345 MB, 4.7 MB 31 sx 194
Про вплив файлового кешу на результати тестування не згадується. Ймовірно, низька швидкість ZIP обумовлена порядком запуску тестів без огляду на кешування даних у пам'яті - тест із zip був запущений при холодному кеші, а решта тестів при прогрітому. У звичайних умовах Zstandard демонструє в 3-5 разів більш високу швидкість стиснення порівняно з zlib і вдвічі швидше розпакування, при рівні стиснення вище на 10-15%.
Додаток: Схожа ідея зберігання стислих файлів у вигляді блобів у БД SQLite реалізована у 2014 році в архіваторі sqlar, створеному розробниками SQLite як експеримент для оцінки ефективності зберігання блобів у SQLite. У sqlar для стиснення використовується zlib і розмір файлів приблизно на 2% більше, ніж у утиліти ZIP.
Джерело: opennet.ru