Допустимые значения: |
от 1 до 32
|
Значение по умолчанию: |
1
|
При сжатии большого количества данных компрессор LZMA2 имеет возможность разделить данные на отдельные "блоки" и сжимать их параллельно с помощью дополнительных потоков (при условии достаточной мощности процессора). Эта директива определяет количество используемых потоков, то есть максимальное количество блоков, которые компрессор LZMA2 может сжимать параллельно.
Объём память, необходимый для сжатия при использовании нескольких потоков, приблизительно равен:
LZMANumBlockThreads * (Объём памяти + (LZMABlockSize * 2))
Поскольку LZMA2 (и LZMA) по умолчанию использует два потока для поиска совпадений (см. CompressionThreads), в идеале для каждого потока должно быть доступно два ядра процессора. Таким образом, чтобы увидеть максимальную выгоду от значения 2, необходимы четыре ядра.
Разделение данных на несколько блоков может снизить степень сжатия, так как компрессор не сможет найти совпадений между блоками. Использование большого размера блока может помочь уменьшить эту проблему.
Если при включении нескольких потоков в сочетании с уровнем сжатия, использующим большой размер словаря (такой как ultra64) будет получена ошибка "Out of memory" (Нехватка памяти), необходимо использовать директиву LZMAUseSeparateProcess.