[Setup]: Compression

Допустимые значения:

zip
zip/1 до zip/9
bzip
bzip/1 до bzip/9
lzma
lzma/fast
lzma/normal
lzma/max
lzma/ultra     (перед использованием ознакомьтесь с требованиями к памяти)
lzma/ultra64  (перед использованием ознакомьтесь с требованиями к памяти)
lzma2
lzma2/fast
lzma2/normal
lzma2/max
lzma2/ultra     (перед использованием ознакомьтесь с требованиями к памяти)
lzma2/ultra64  (перед использованием ознакомьтесь с требованиями к памяти)
none

Значение по умолчанию:

lzma2/max

Описание

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

Значение zip определяет метод сжатия, используемый архиваторами ZIP (алгоритм "Deflate"). Он является быстрым как для сжатия, так и для распаковки, а также предъявляет очень низкие требования к оперативной памяти (менее 1 МБ для сжатия и распаковки с уровнем 9), но в целом общая степень сжатия у него самая низкая по сравнению с другими поддерживаемыми методами. Единственное достоинство метода zip: он не увеличивает размер несжимаемых данных (например, когда файлы уже сжаты), как и метод lzma2. Если уровень сжатия не указан, по умолчанию используется 7.

Значение bzip определяет метод сжатия, используемый компрессором bzip2 [внешняя ссылка]. В большинстве случаев степень сжатия у него лучше, чем у zip, но для сжатия и распаковки ему необходимо затратить больше времени. При распаковке требует до 4 МБ оперативной памяти, а при сжатии – до 8 МБ. Если уровень сжатия не указан, по умолчанию используется 9.

Значение lzma определяет метод сжатия, используемый компрессором 7-Zip LZMA [внешняя ссылка]. Обычно степень сжатия у него намного лучше, чем у методов zip и bzip. Однако, в зависимости от уровня сжатия, он может оказаться гораздо медленнее и использовать намного больше памяти. В следующей таблице приведены приблизительные требования к оперативной памяти для каждого из поддерживаемых уровней сжатия lzma. Если уровень сжатия не указан, по умолчанию используется max.

УровеньРаспаковка
(размер словаря)
Сжатие
(6 МБ + 11.5 * размер словаря)
fast (худший)32 КБ6 МБ
normal2 МБ29 МБ
max (по умолчанию)8 МБ98 МБ
ultra32 МБ374 МБ
ultra64 (лучший)64 МБ742 МБ
128 МБ1.44 ГБ
256 МБ2.88 ГБ
512 МБ5.76 ГБ
1 ГБ11.51 ГБ

При указании директивы LZMAMatchFinder со значением HC требования к памяти для сжатия составляют примерно 60% от вышеуказанных, что обусловлено уменьшением степени сжатия.

Значение lzma2 определяет метод сжатия, используемый компрессором 7-Zip LZMA2 [внешняя ссылка]. Метод LZMA2 является модифицированной версией LZMA и предлагает лучшую степень сжатия для несжимаемых данных (размер случайных данных увеличивается примерно на 0.005%, по сравнению с 1.35% в оригинальном LZMA). При необходимости может выполнять сжатие больших файлов в несколько потоков, значительно увеличивая скорость сжатия, правда с возможным снижением коэффициента сжатия (смотрите LZMANumBlockThreads). Если уровень сжатия не указан, то по умолчанию используется max Как и LZMA, LZMA2 предъявляет высокие требования к объёму оперативной памяти (см. таблицу выше). Следует заметить, что LZMA2 поддерживает только ограниченное число размеров словарей, поэтому другие размеры будут округляться до следующего поддерживаемого размера. В свою очередь значения поддерживаемых размеров являются кратными двум, начиная с 4 (4, 8, 16, 32 и т.д.), и средними между ними (6, 12, 24 и т.д.). Например, словарь размером 524289 (512 МБ + 1 байт) потребует столько же памяти, сколько словарь размером 786432 (768 МБ).

Значение none указывает, что сжатие не используется.

См. также:

SolidCompression
LZMAAlgorithm
LZMABlockSize
LZMADictionarySize
LZMAMatchFinder
LZMANumBlockThreads
LZMANumFastBytes
LZMAUseSeparateProcess