Вопрос или проблема
В 7zip существуют различные методы сжатия. Какой метод лучше всего подходит для какой задачи?
Например: Одно из различий между LZMA и LZMA2 заключается в том, что я могу выбрать все свои ядра процессора, тогда как в LZMA максимум 2 ядра.
Используйте LZMA2, если только вам не нужно извлекать архив на системе, которая не может работать с архивами LZMA2.
Вообще говоря, большинство современных алгоритмов сжатия дают примерно одинаковое сжатие, и что касается количества ядер, которые вы можете использовать одновременно, это зависит от вас, сколько вы хотите использовать. В общем (если только вы не создаете большие архивы), не нужно использовать более одного. Кроме того, при сжатии с помощью нескольких ядер узким местом может стать жесткий диск.
7-Zip (по крайней мере, по состоянию на 2019-09-27) имеет встроенный справочный документ с очень хорошим объяснением различных настроек, которые вы можете выбрать, и того, для чего, в общем, каждая из них хороша.
Нет никаких результатов тестов или чего-то подобного, но информация была достаточно информативной, чтобы убедиться, что я выбираю “достаточно хорошие”, а не “случайно ужасные” настройки.
Справочный документ доступен через 7-Zip File Manager, а также через диалоговое окно “Добавить в архив”.
Путь к странице, которую я нашел полезной (которая открывается непосредственно из диалогового окна “Добавить в архив”):
Файловый менеджер / Плагины / 7-Zip / Диалоговое окно "Добавить в архив"
Вот простая копия/вставка раздела методов сжатия:
Описание метода
- 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 |
Документ 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 поможет выбрать оптимальные параметры, избегая "случайно неудачных" настроек.