Алгоритм сжатия LZMA в 7-Zip работает следующим образом: 1
- Поступив на вход, данные пропускаются через дельта-фильтр, где они преобразуются для дальнейшего кодирования. 1
- После полученная последовательность подвергается словарному сжатию. 1
- Пропустив данные через алгоритм «скользящего» окна, получают код, который для достижения лучшего сжатия подвергают интервальному кодированию. 1 На выходе получают интервал целых чисел, который и будет отвечать исходной последовательности. 1
Основная идея алгоритма — построить и сохранить словарь, содержащий ранее встречавшиеся подстроки, которые затем заменяются ссылками в этом словаре. 2 Это позволяет значительно сократить объём данных, подлежащих хранению или передаче. 2
Некоторые особенности алгоритма LZMA:
- высокий коэффициент сжатия; 4
- переменный размер словаря (до 4 ГБ); 34
- скорость сжатия: около 1 МБ/с на процессоре 2 ГГц; 3
- скорость распаковки: около 10–20 МБ/с на процессоре 2 ГГц; 3
- небольшие требования к памяти для распаковки (зависит от размера словаря); 3
- небольшой размер кода для распаковки: около 5 КБ. 3