Почему это критикуется так? Для меня это только для одной точки: прозрачность. Реестр не делает имеет любого, imo. Объективно:
Для распределения архивов по Интернету следующими вещами обычно является приоритет:
Память сжатия и требования ЦП не очень важны, потому что можно использовать большую быструю машину для этого, и только необходимо сделать это однажды.
По сравнению с bzip2 xz имеет лучшую степень сжатия и ниже (лучшее) время распаковки. Это, однако — при настройках сжатия, обычно используемых — требует, чтобы больше памяти распаковало [1], и несколько менее широко распространено. Gzip использует меньше памяти, чем также.
Так, и gzip и xz архивы формата отправляются, позволяя Вам выбрать:
Нет действительно реалистической комбинации факторов, это заставило бы Вас выбирать bzip2. Так то, что это было постепенно сокращенным.
Я посмотрел на сравнения сжатия в сообщении в блоге. Я не попытался копировать результаты, и я подозреваю, что часть его изменилась (главным образом, я ожидаю xz
улучшился, поскольку это является новейшим.)
(Существуют некоторые определенные сценарии, где хорошая bzip2 реализация может быть предпочтительна для xz: bzip2 может сжимать файл с большим количеством нулей и генома, который DNA упорядочивает лучше, чем xz. Более новые версии xz теперь имеют (дополнительно) блочный режим, который позволяет восстановление данных после точки повреждения и параллельного сжатия и [в теории] распаковка. Ранее, только bzip2 предложил их. [2] Однако ни один из них не важен для распределения ядра),
1: В размере архива, xz -3
вокруг bzip -9
. Затем xz использует меньше памяти для распаковки. Но xz -9
(как, например, используемый для ядра Linux tarballs), использует намного больше, чем bzip -9
. (И даже xz -0
потребности больше, чем gzip -9
).
2: F21 Изменение В масштабе всей системы: lbzip2 как значение по умолчанию bzip2 реализация
В первую очередь, этот вопрос непосредственно не связан с tar
. Tar просто создает несжатый архив, сжатие затем применяется позже.
Gzip, как известно, относительно быстр по сравнению с LZMA2 и bzip2. Если скорость имеет значение, gzip
(особенно многопоточная реализация pigz
) часто хороший компромисс между скоростью сжатия и степенью сжатия. Хотя существуют альтернативы, если скорость является проблемой (например, LZ4).
Однако, если высокая степень сжатия желаема удары LZMA2 bzip2
почти в каждом аспекте. Скорость сжатия часто медленнее, но она распаковывает намного быстрее и обеспечивает намного лучшую степень сжатия за счет более высокого использования памяти.
Нет большой причины использовать bzip2
больше, кроме назад совместимости. Кроме того, LZMA2 был desiged с многопоточностью в памяти, и много реализаций по умолчанию используют многоядерные центральные процессоры (к сожалению, xz
на Linux не делает этого, еще). Это имеет смысл, так как тактовые частоты не будут больше увеличиваться, но количество ядер будет.
Там являются многопоточными bzip2
реализации (например. pbzip
), но они часто не устанавливаются по умолчанию. Также обратите внимание что многопоточный bzip2
только действительно окупитесь при сжатии, тогда как распаковка использует единственный поток, если файл был сжатием с помощью поточного сингла bzip2
, в отличие от LZMA2. Параллель bzip2
варианты могут только усилить многоядерные центральные процессоры, если файл был сжат с помощью параллели bzip2
версия, которая часто является не случаем.
xz
будет многопоточным по умолчанию так нет pixz
установка будет требоваться в будущем. На некоторых платформах xz
поточная обработка уже поддерживается. Принимая во внимание, что bzip2
вряд ли когда-либо будет многопоточным, так как формат не был разработан с многопоточностью в памяти. Кроме того, pbzip2
только ускоряет распаковку, если файл был сжат с помощью pbzip2
который часто является не случаем.
– Marco
08.01.2014, 14:07
Короткий ответ: xz более эффективен с точки зрения степени сжатия. Таким образом, это сохраняет дисковое пространство и оптимизирует передачу через сеть.
Вы видите этот Быстрый Сравнительный тест, чтобы обнаружить различие практическими тестами.
LZMA2 - это система сжатия блоков, а gzip - нет. Это означает, что LZMA2 поддается многопоточности. Кроме того, если в архиве происходит повреждение, вы обычно можете восстановить данные из последующих блоков с помощью LZMA2, но вы не можете сделать это с помощью gzip. На практике вы теряете весь архив с gzip после поврежденного блока. С архивом LZMA2 вы теряете только файл (ы), затронутые поврежденными блоками. Это может быть важно в больших архивах с несколькими файлами.