Для распространения архивов через Интернет, как правило, приоритетными являются следующие вещи:
- Степень сжатия (т. Е. Насколько маленький компрессор создает данные);
- Время декомпрессии (требования к процессору);
- Требования к памяти для декомпрессии; а также
- Совместимость (насколько широко распространена программа декомпрессии)
Требования к памяти и процессору для сжатия не очень важны, потому что вы можете использовать для этого большую быструю машину, и вам нужно сделать это только один раз.
По сравнению с bzip2, xz имеет лучшую степень сжатия и меньшее (лучшее) время декомпрессии. Однако для этого - при обычно используемых настройках сжатия - требуется больше памяти для распаковки [1], и он несколько менее распространен. Gzip использует меньше памяти, чем любой.
Итак, оба архива в формате gzip и xz размещены, что позволяет вам выбрать:
- Необходимо распаковать на машине с очень ограниченной памятью (<32 МБ): gzip. Учитывая, не очень вероятно, когда речь идет об источниках ядра.
- Нужно распаковать минимум доступных инструментов: gzip
- Хотите сэкономить время загрузки и / или пропускную способность: xz
На самом деле не существует реалистичной комбинации факторов, которая заставила бы вас выбрать bzip2. Так что это постепенно прекращается.
Я посмотрел на сравнения сжатия в блоге . Я не пытался повторить результаты, и я подозреваю, что некоторые из них изменились (в основном, я ожидаю, xz
что улучшились, так как он самый новый).
(Существуют некоторые конкретные сценарии, в которых хорошая реализация bzip2 может быть предпочтительнее xz: bzip2 может сжимать файл с большим количеством нулей и последовательностей ДНК генома лучше, чем xz. Более новые версии xz теперь имеют (необязательный) режим блокировки, который позволяет восстанавливать данные после точки повреждения и параллельного сжатия и [в теории] декомпрессии. Ранее, только bzip2 предлагал это. [2] Однако ни один из них не имеет отношения к распределению ядра)
1: в размере архива, xz -3
вокруг bzip -9
. Затем xz использует меньше памяти для распаковки. Но xz -9
(как, например, используемый для тарболлов ядра Linux) использует гораздо больше, чем bzip -9
. (И даже xz -0
нужно больше чем gzip -9
).
2: Изменение всей системы F21: lbzip2 как реализация bzip2 по умолчанию
Прежде всего, этот вопрос не имеет прямого отношения к
tar
. Tar просто создает несжатый архив, затем сжатие применяется позже.Известно, что Gzip относительно быстр по сравнению с LZMA2 и bzip2. Если скорость имеет значение,
gzip
(особенно многопоточная реализацияpigz
) часто является хорошим компромиссом между скоростью сжатия и степенью сжатия. Хотя есть альтернативы, если скорость является проблемой (например, LZ4).Однако, если требуется высокая степень сжатия, LZMA2 бьется
bzip2
почти во всех аспектах. Скорость сжатия часто медленнее, но распаковывается намного быстрее и обеспечивает гораздо лучший коэффициент сжатия за счет более высокого использования памяти.Существует не так много причин для использования
bzip2
, кроме обратной совместимости. Кроме того, LZMA2 был разработан с учетом многопоточности, и во многих реализациях по умолчанию используются многоядерные процессоры (к сожалению,xz
в Linux этого пока нет). Это имеет смысл, поскольку тактовые частоты больше не будут увеличиваться, но количество ядер будет увеличиваться.Существуют многопоточные
bzip2
реализации (напримерpbzip
), но они часто не устанавливаются по умолчанию. Также обратите внимание, что многопоточностьbzip2
действительно окупается только при сжатии, тогда как декомпрессия использует один поток, если файл был сжат с использованием одного потокаbzip2
, в отличие от LZMA2. Параллельныеbzip2
варианты могут использовать многоядерные ЦП только в том случае, если файл был сжат с использованием параллельнойbzip2
версии, что часто не так.источник
z
выбор.xz
будет многопоточным по умолчанию, поэтомуpixz
в будущем установка не потребуется. На некоторых платформахxz
потоки уже поддерживаются. Принимая во внимание,bzip2
что вряд ли когда-либо будет многопоточным, так как формат не был разработан с учетом многопоточности. Кроме того,pbzip2
ускоряет распаковку , только если файл был сжат с использованием,pbzip2
что часто не так.Краткий ответ : xz более эффективен с точки зрения степени сжатия. Таким образом, это экономит дисковое пространство и оптимизирует передачу по сети.
Вы можете увидеть этот Quick Benchmark, чтобы обнаружить разницу с помощью практических тестов.
источник
LZMA2 - это система сжатия блоков, а gzip - нет. Это означает, что LZMA2 поддается многопоточности. Кроме того, если в архиве происходит повреждение, вы можете восстановить данные из последующих блоков с помощью LZMA2, но вы не можете сделать это с помощью gzip. На практике вы теряете весь архив с помощью gzip после поврежденного блока. С архивом LZMA2 вы потеряете только те файлы, на которые влияют поврежденные блоки. Это может быть важно в больших архивах с несколькими файлами.
источник