[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 Мб
normal 2 Мб 29 Мб
max (по умолчанию) 8 Мб 98 Мб
ultra 32 Мб 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 и т.д. до 1048576), и средними между ними (6, 12, 24 и т.д. до 786432). Например, словарь размером 524289 (512 Мб + 1 байт) потребует столько же памяти, сколько словарь размером 786432 (768 Мб).

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

См. также:

SolidCompression
LZMAAlgorithm
LZMABlockSize
LZMADictionarySize
LZMAMatchFinder
LZMANumBlockThreads
LZMANumFastBytes
LZMAUseSeparateProcess