Итак, в 7zip есть разные методы сжатия. Какой метод лучше всего подходит для какой задачи?
Например: одно из различий между LZMA и LZMA2 заключается в том, что я могу выбрать все ядра своего процессора, тогда как в LZMA максимум 2 ядра.
решение1
Используйте LZMA 2, если вы не хотите извлекать архив в системе, которая не может работать с архивами LZMA 2.
Вообще говоря, большинство современных алгоритмов сжатия дают примерно одинаковое сжатие, а что касается количества ядер, которые вы можете использовать одновременно, то вам решать, сколько вы хотите использовать. Вообще говоря (если вы не создаете большие архивы), нет причин нуждаться в большем количестве. Кроме того, при сжатии несколькими ядрами узким местом может стать жесткий диск.
решение2
7-Zip (по крайней мере, по состоянию на 27.09.2019) имеет встроенную справку с очень, очень подробным объяснением различных настроек, которые вы можете выбрать, и того, для чего в целом каждый из них предназначен.
Никаких результатов тестов или чего-то подобного нет, но этой информации было достаточно, чтобы вселить в меня уверенность в том, что я выбираю «достаточно хорошие», а не «случайно ужасные» настройки.
Справочный документ доступен через файловый менеджер 7-Zip, а также через диалоговое окно «Добавить в архив».
Путь «Содержимое» к странице, которую я нашел полезной (которая открывается непосредственно из диалогового окна «Добавить в архив»), следующий:
File Manager / Plugins / 7-Zip / Add to Archive Dialog Box
Вот примерная копия раздела о методах сжатия:
Описание метода
- ЛЗМА
- Это базовый метод сжатия для формата 7z. Даже старые версии 7-Zip могут распаковывать архивы, созданные методом LZMA. Он обеспечивает высокую степень сжатия и очень быструю распаковку.
- ЛЗМА2
- Метод сжатия по умолчанию формата 7z. LZMA2 — это метод сжатия на основе LZMA. Он обеспечивает лучшую поддержку многопоточности, чем LZMA. Но в некоторых случаях степень сжатия может быть хуже. Для лучшей степени сжатия с LZMA2 используйте 1 или 2 потока ЦП. Если вы используете LZMA2 с более чем 2 потоками, 7-zip разбивает данные на фрагменты и сжимает эти фрагменты независимо (2 потока на каждый фрагмент).
- ППМд
- Алгоритм PPMdH Дмитрия Шкарина с небольшими изменениями. Обычно обеспечивает высокую степень сжатия и высокую скорость для текстовых файлов.
- BZip2
- Стандартный метод сжатия на основе алгоритма BWT. Обычно он обеспечивает высокую скорость и довольно хорошую степень сжатия для текстовых файлов.
- Сдувать
- Стандартный метод сжатия форматов ZIP и GZip. Степень сжатия не слишком высокая. Но обеспечивает довольно быстрое сжатие и распаковку. Метод Deflate поддерживает только словарь размером 32 КБ.
- Сдуть64
- Модифицированная версия алгоритма Deflate с увеличенным словарем (64 КБ).
решение3
Lzma2 работает быстрее при использовании 4 и более ядер и обеспечивает лучшее сжатие.Этот документвсе объясняет.
решение4
Ссылку можно найти на 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 Мб. Идея большой коллекции заключается в фильтрации «шума». Компрессор может плохо работать с 1 или 2 типами файлов, но на очень большой коллекции это не повредит так сильно.
Некоторые программы, такие как CCM и BZIP2, могут сжимать только один файл за раз. Для этих программ создается один файл TAR, содержащий все файлы. Файлы в этом файле TAR упорядочены в алфавитном порядке по суффиксу, затем по имени. Результаты этих компрессоров отмечены знаком «Y» в колонке tarred.
Тестовый набор состоит из следующих типов файлов:
Типы файлов) | Описание | % от общего количества | # файлов |
---|---|---|---|
ТОС, МБХ | Почтовые ящики Eudora | 12.31 | 16 |
EXE, DLL, OCX, DRV | Исполняемые файлы | 10.99 | 35 |
TXT, RTF, DIC, СПГ | Текстовые файлы на нескольких языках | 10.21 | 41 |
BMP, TIFF | Растровые изображения/TIF-изображения | 7.88 | 15 |
БРЕВНО | Лог-файлы | 6.34 | 6 |
HTM, PHP | HTML-файлы | 6.13 | 19 |
ДОК | Файлы MS Word | 6.08 | 30 |
C, CPP, PAS, DCU | Исходный код | 6.00 | 235 |
МБД, CSV | Базы данных | 4.26 | 7 |
HLP | Файлы справки Windows | 4.23 | 7 |
КБФ, КБГ | Предварительно сжатые шахматные базы данных | 3.55 | 2 |
WAV | Звуковые файлы Wave | 3.45 | 9 |
XLS | Электронные таблицы XLS | 2.41 | 16 |
Документ Adobe Acrobat | 1.59 | 6 | |
ТТФ | Шрифты True Type | 1.15 | 15 |
ОПРЕДЕЛЕНИЕ | Файлы определения вирусов | 1.10 | 3 |
JPEG, GIF-файлы | Файлы изображений | 0,53 | 9 |
ЧМ | Предварительно сжатые файлы справки | 0,49 | 2 |
ИНИ, ИНФ | 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. (Особая благодарность Уве Герклотцу за то, что он правильно понял эту формулу)
оценка_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% худших результатов (по сравнению с top) время удваивается, поэтому любой архиватор (кроме top compressor) получит штраф по времени. Оценка top compressor всегда равна его значению времени.