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

Вопрос или проблема

enter image description here

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

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

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

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

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

Нет никаких результатов тестов или чего-то подобного, но информация была достаточно информативной, чтобы убедиться, что я выбираю “достаточно хорошие”, а не “случайно ужасные” настройки.

Справочный документ доступен через 7-Zip File Manager, а также через диалоговое окно “Добавить в архив”.

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

Файловый менеджер / Плагины / 7-Zip / Диалоговое окно "Добавить в архив"

enter image description here

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

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

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

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

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

Обновление: недоступная ссылка, используйте машину Wayback: https://web.archive.org/web/20170617172531/https://www.maximumcompression.com/data/summary_mf2.php#data

Ссылка доступна на машине Wayback :

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

Самый маленький файл (в байтах): 3,554

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

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

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

Тип(ы) файла Описание % от общего Количество файлов
TOC, MBX Почтовые ящики Eudora 12,31 16
EXE, DLL, OCX, DRV Исполняемые файлы 10,99 35
TXT, RTF, DIC, LNG Текстовые файлы на нескольких языках 10,21 41
BMP, TIFF Изображения BMP/TIF 7,88 15
LOG Файлы журналов 6,34 6
HTM, PHP HTML-файлы 6,13 19
DOC Файлы MS Word 6,08 30
C, CPP, PAS, DCU Исходный код 6,00 235
MDB, CSV Базы данных 4,26 7
HLP Файлы помощи Windows 4,23 7
CBF, CBG Сжатые базы данных шахмат 3,55 2
WAV Файлы звука Wave 3,45 9
XLS Электронные таблицы XLS 2,41 16
PDF Документ Adobe Acrobat 1,59 6
TTF Шрифты True Type 1,15 15
DEF Файлы определений вирусов 1,10 3
JPG, GIF Изображения 0,53 9
CHM Сжатые файлы помощи 0,49 2
INI, INF INI файлы 0,42 10
Другие DAT,JAR,M3D,SYS,PPT,MAP,WP,RLL,RIB.. 10,88 27

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

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

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

score_X = POWER(2; ((size_X / size_TOP) – 1) / 0,1) * time_X

где

  score_X     оценка эффективности для определенного компрессора X

  time_X      время, затраченное компрессором X (время сжатия и распаковки)

  size_X      размер архива, достигнутый компрессором X

  size_TOP    размер архива лучшего компрессора (наименьший результат теста)

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

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

.

Ответ или решение

В вопросе о различных методах сжатия в 7-Zip следует взвесить все доступные опции, чтобы понять, какая из них наиболее подходит для конкретной задачи. 7-Zip предлагает широкий спектр методов сжатия, таких как LZMA, LZMA2, PPMd, BZip2, Deflate и Deflate64. Рассмотрим каждый из них подробнее, чтобы определить их применение.

LZMA и LZMA2

LZMA — это основополагающий метод сжатия в формате 7z. Он обеспечивает высокий коэффициент сжатия и очень быструю декомпрессию. Его можно использовать для архивов, которые будут извлекаться на старых системах, поскольку даже старые версии 7-Zip поддерживают этот метод. Однако LZMA поддерживает многопоточность максимум на два ядра.

LZMA2 стал стандартным методом для 7z формата. Это усовершенствованная версия LZMA с более развитой поддержкой многопоточности. Этот метод особенно эффективен при использовании четырех и более ядер, так как 7-Zip разбивает данные на чанки и сжимает их независимо, по два потока на каждый чанк. Хотя коэффициент сжатия иногда может быть менее эффективным, в большинстве случаев LZMA2 предпочтителен для больших архивов.

PPMd

PPMd оптимизирован для текстовых файлов. Он основан на алгоритме PPMdH с некоторыми изменениями и обеспечивает высокий коэффициент сжатия и высокую скорость сжатия для текстового контента. Если вы работаете с группой текстовых файлов (например, RTF, TXT), этот метод может значительно уменьшить размер архива.

BZip2

BZip2 использует алгоритм BWT и является стандартным методом сжатия, обеспечивающим высокую скорость и хорошее сжатие для текстовых файлов и документов. Это хороший выбор для данных, которые включают текстовые и табличные файлы, такие как CSV и DOC.

Deflate и Deflate64

Deflate — стандартный метод сжатия для форматов ZIP и GZip. Хотя коэффициент сжатия не такой высокий, он обеспечивает быстрое сжатие и декомпрессию. Deflate лучше всего подходит для данных, чувствительных ко времени обработки.

Deflate64 представляет собой усовершенствованную версию алгоритма Deflate с расширенным словарем размером 64 КБ, что может улучшить коэффициент сжатия в определенных случаях.

Выводы и рекомендации

Выбор метода сжатия в 7-Zip зависит от характера данных и доступных ресурсов системы, включая количество доступных ядер процессора.

  • Для высоких коэффициентов сжатия и значительного уменьшения размера файловых архивов: выбирайте LZMA или LZMA2.
  • Для текстовых файлов: рассмотрите использование PPMd или BZip2.
  • Быстрота сжатия важна? Используйте Deflate или Deflate64 для более быстрого выполнения.

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

Оцените материал
Добавить комментарий

Капча загружается...