Различные методы сжатия в 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% худшего результата (по сравнению с верхним) время удваивается, поэтому любой архиватор (кроме верхнего компрессора) получит штраф по времени. Оценка верхнего компрессора всегда равна его временному значению.