Различные методы сжатия в 7zip: какой лучше всего подходит для какой задачи?

введите описание здесь

Так что в 7zip есть разные методы сжатия. Какой метод лучше всего подходит для какой задачи?

Например: Одно из различий между LZMA и LZMA2 заключается в том, что я могу выбрать все свои ядра процессора, тогда как в LZMA 2 ядра - макс.

5 ответов

Решение

Используйте LZMA 2, если вы не хотите извлекать архив в системе, которая не может работать с архивами LZMA 2.

Вообще говоря, большинство современных алгоритмов сжатия дают примерно одинаковое сжатие, и в отношении количества ядер, которые вы можете использовать одновременно, вам решать, сколько вы хотите использовать. Говоря в общем (если вы не создаете большие архивы), нет причин, почему нужно больше, чем один. Кроме того, при сжатии нескольких ядер узким местом может стать жесткий диск.

7-Zip (по крайней мере, с 2019 по 27-27) имеет встроенный справочный документ с очень, очень хорошим объяснением различных настроек, которые вы можете выбрать, и для чего, в общем, каждый из них хорош.

Там нет результатов тестов или что-то еще, но было достаточно информации, чтобы вселить в меня уверенность, что я выбирал "достаточно хорошо", а не "случайно ужасные" настройки.

Документ справки доступен через диспетчер файлов 7-Zip, а также через диалоговое окно "Добавить в архив".

Путь "Содержание" к странице, которую я нашел полезной (которая открывается непосредственно из диалогового окна "Добавить в архив"):

File Manager / Plugins / 7-Zip / Add to Archive Dialog Box

Вот примерное копирование / вставка раздела метода сжатия:

Описание метода

  • LZMA
    • Это базовый метод сжатия для формата 7z. Даже старые версии 7-Zip могут распаковывать архивы, созданные методом LZMA. Это обеспечивает высокую степень сжатия и очень быструю декомпрессию.
  • LZMA2
    • Метод сжатия по умолчанию в формате 7z. LZMA2 - это метод сжатия на основе LZMA. Он обеспечивает лучшую поддержку многопоточности, чем LZMA. Но степень сжатия может быть хуже в некоторых случаях. Для лучшей степени сжатия с LZMA2 используйте 1 или 2 потока ЦП. Если вы используете LZMA2 с более чем 2 потоками, 7-zip разбивает данные на куски и сжимает эти куски независимо (2 потока на каждый блок).
  • PPMd
    • Алгоритм PPMdH Дмитрия Шкарина с небольшими изменениями. Обычно это обеспечивает высокую степень сжатия и высокую скорость для текстовых файлов.
  • BZip2
    • Стандартный метод сжатия на основе алгоритма BWT. Обычно это обеспечивает высокую скорость и довольно хорошую степень сжатия для текстовых файлов.
  • выкачивает
    • Стандартный метод сжатия форматов ZIP и GZip. Степень сжатия не слишком высока. Но это обеспечивает довольно быстрое сжатие и распаковку. Метод Deflate поддерживает только 32 КБ словаря.
  • Deflate64
    • Модифицированная версия алгоритма Deflate с увеличенным словарем (64 КБ).

Lzma2 быстрее при использовании 4 или более ядер и обеспечивает лучшее сжатие. Этот документ объясняет все это.

Посмотрите здесь: http://www.maximumcompression.com/data/summary_mf2.php и сортируйте по эффективности. Я лично хотел бы, чтобы FreeArc был встроен в 7-zip, и иногда использую его.

Ссылку можно найти на Wayback Machine:

https://web.archive.org/web/20221015140740/http://www.maximumcompression.com/data/summary_mf2.php

(раздражало переформатирование таблицы - можно задаться вопросом, почему она не может преобразовать таблицу html в свой собственный формат)

Сводка нескольких тестов производительности сжатия файлов

Тип файла: несколько типов файлов (всего 46)

Количество файлов для сжатия в этом тесте: 510

Общий размер файла (байты): 316.355.757

Средний размер файла (байты): 620 305.

Самый большой файл (байт): 18 403 071.

Наименьший файл (байт): 3554.

Этот тест предназначен для моделирования «реальной» производительности компрессоров данных без потерь. Тестовый набор содержит смесь различных типов файлов, выбранных с учетом того, «Для чего люди чаще всего используют архиваторы». Набор тестов должен содержать данные, взвешенные (как по типу, так и по доле файлов в наборе) по тому, как часто эти файлы используются для сжатия обычными пользователями, использующими программное обеспечение для сжатия. Так, например, в наборе будет больше файлов txt, чем файлов .ocx (да, это произвольно). Набор содержит сотни файлов общим размером более 300 Мб. Идея большой коллекции заключается в фильтрации «шума». Компрессор может плохо работать с одним или двумя типами файлов, но для очень большой коллекции это не повредит.

Некоторые программы, такие как CCM и BZIP2, могут сжимать только один файл за раз. Для этих программ создается один TAR-файл, содержащий все файлы. Файлы в этом TAR-файле упорядочены в алфавитном порядке по суффиксу, затем по названию. Результаты этих компрессоров отмечены буквой «Y» в смоляном столбце.

Тестовый набор состоит из следующих типов файлов:

Учитывая тот факт, что это должен быть «реальный» тест, я не буду рассматривать наилучшую возможную комбинацию переключателей (командная строка или графический интерфейс), которую можно использовать для оптимального сжатия, а буду тестировать только ограниченный набор, как это сделали бы «обычные пользователи». . Для 7-zip это означает, например, что я буду использовать графический интерфейс и выбирать метод сжатия Ultra (который можно легко обойти с помощью некоторых хороших переключателей командной строки), WinRar будет протестирован с максимальным размером словаря, надежным архивированием и т. д. Программам разрешено используйте максимум 800 МБ памяти и должны завершить этап сжатия в течение 12 часов. Размер сжатого файла должен составлять 50 % или меньше по сравнению с исходным размером, чтобы он был указан в MFC.

Для моих тестов с одним файлом я получил множество запросов на добавление времени сжатия в таблицы. Я не делал этого по причинам, указанным в сводном файле одного файла, но я планирую измерить время сжатия для этого теста с несколькими файлами! Я также решил сделать этот набор тестов «закрытым», чтобы разработчикам было сложнее настроить свою программу под этот конкретный тест. Я думаю, что это самый честный способ получить «реальные» тесты производительности.

Система оценок: программа с наименьшим сжатым размером считается лучшей программой. Самая эффективная (читай: использовать полную) программа рассчитывается путем умножения времени сжатия + распаковки (в секундах), необходимого для создания архива, на мощность размера архива, разделенную на наименьший измеренный размер архива. Чем ниже балл, тем лучше. Основная идея заключается в том, что компрессор X имеет ту же эффективность, что и компрессор Y, если X может сжимать в два раза быстрее, чем Y, и результирующий размер архива X на 10% больше размера Y. (Особая благодарность Уве Херклотцу за правильное понимание этой формулы)

счет_X = МОЩНОСТЬ(2; ((размер_X / размер_ВЕРХ) - 1) / 0,1) * время_X

с

        score_X     efficiency score for a certain compressor X

  time_X      time elapsed by compressor X (comp + decomp time)

  size_X      archive size achieved with compressor X

  size_TOP    archive size by top archiver (smallest benchmark result)

Формула для расчета эффективности компрессора на основе размера сжатого воздуха и времени сжатия.

«0,1» представляет 10%, а степень 2 гарантирует, что на каждые 10% худшего результата (по сравнению с верхним) время удваивается, поэтому любой архиватор (кроме верхнего компрессора) получит штраф по времени. Оценка верхнего компрессора всегда равна его временному значению.

Другие вопросы по тегам