[ON] Эксперимент с использованием SQLite в качестве контейнера для архивирования файлов

Обсуждение новостей, соответствующих тематике форума

Модератор: Модераторы разделов

Ответить
Аватара пользователя
rssbot
Бот
Сообщения: 6002
ОС: gnu/linux

[ON] Эксперимент с использованием SQLite в качестве контейнера для архивирования файлов

Сообщение rssbot »

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








Источник: https://www.opennet.ru/opennews/art.shtml?num=60842
(opennet.ru, мини-новости)
Последний раз редактировалось rssbot 25.03.2024 15:59, всего редактировалось 2 раза.
Причина: Updated upstream
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20799
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: [ON] Эксперимент с использованием SQLite в качестве контейнера для архивирования файлов

Сообщение Bizdelnick »

Какой-то бред. Сравнивали разные алгоритмы сжатия, а вывод делают о формате контейнера. Ещё и по единственному измерению, даже статистику поленились набрать. И что за данные жали — непонятно.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2660
ОС: Gentoo

Re: [ON] Эксперимент с использованием SQLite в качестве контейнера для архивирования файлов

Сообщение ormorph »

Главное что в Lazarus написано. Просто гениально, до них это ни кому в голову не приходило.
Спасибо сказали:
Ответить