Eksperimento gamit ang SQLite isip sudlanan sa pag-archive sa mga file

Проект 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 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

Про влияние файлового кэша на результаты проведения теста не упоминается. Вероятно, низкая скорость ZIP обусловлена порядком запуска тестов без оглядки на кэширование данных в памяти — тест с zip был запущен при холодном кэше, а остальные тесты при прогретом. В обычных условиях Zstandard демонстрирует в 3-5 раз более высокую скорость сжатия по сравнению с zlib и в два раза более быструю распаковку, при уровне сжатия выше на 10-15%.

Дополнение: Похожая идея хранения сжатых файлов в виде блобов в БД SQLite реализована в 2014 году в архиваторе sqlar, созданном разработчиками SQLite в качестве эксперимента для оценки эффективности хранения блобов в SQLite. В sqlar для сжатия применяется zlib и размер файлов примерно на 2% больше, чем у утилиты ZIP.

Source: opennet.ru

Idugang sa usa ka comment