Тело:
Я разрабатываю собственный менеджер пакетов Linux (ядро написано на Rust). Сервер репозитория имеет ограниченное хранилище/процессор, поэтому интенсивное повторное сжатие на стороне сервера недопустимо. Я планирую, чтобы сопровождающие запускали команду публикации на своих машинах, которая подготавливает пакет и загружает его.
Моя философия — поддерживать единообразие экосистемы и избегать множества форматов. Текущий план — стандартизировать единый метод сжатия для всех пакетов.
Что я знаю:
- значительно выигрывает по скорости распаковки и скорости сжатия.
Код: Выделить всё
zstd - по-прежнему немного выигрывает по конечному сжатому размеру (особенно для очень больших двоичных объектов).
Код: Выделить всё
xz
Для огромных пакетов (например, игровые ресурсы, модели искусственного интеллекта, большие предварительно скомпилированные двоичные файлы — более 500 МБ в распакованном виде), can zstd -19 (максимальный уровень) реально соответствовать или достаточно близко к xz -9 в сжатом размере, чтобы оправдать полное удаление xz?
В частности, я ищу:
- Реальные числа от любого, кто перенес репозиторий для больших двоичных файлов с xz на zstd. Сколько процентов размера вы на самом деле потеряли (или получили)?
- Опыт обучения словарей: Кто-нибудь использовал предварительно обученные словари для zstd в контексте репозитория пакетов? Удалось ли сократить разрыв с xz? Стоила ли сложность эксплуатации того?
- Влияние на конечного пользователя. Насколько заметна разница в скорости распаковки очень больших пакетов между xz и zstd на современном потребительском оборудовании? (Меня волнует время установки как часть UX.)
- Особые случаи: существуют ли типы двоичных данных, где xz остается значительно лучше, поэтому стоит оставить его в качестве запасного варианта для сопровождающих с помощью явного флага (например, --keep-compression)?
Мобильная версия