Наверно большинство из нас знает о бесплатном архиваторе 7-zip, но не все представляют, какой алгоритм сжатия подходит именно для наших задач. Давайте вместе разберемся. По состоянию на начало 2021 года доступны следующие варианты:
- LZMA — немного улучшенная и оптимизированная версия алгоритма LZ77 (впервые разработка была опубликована в 1977 году, как вы понимаете это и привело к названию семейства алгоритмов);
- LZMA2 — еще более улучшенная версия LZ77, в настоящее время используется в архиваторе 7-zip «по умолчанию». Преимущества перед LZMA: поток может содержать одновременно несжатые и сжатые данные (нет смысла тратить время на сжатие заведомо слабо сжимаемых типов информации), более стабильная поддержка многопоточности при компрессии и декомпрессии (что позитивно сказалось на качестве и скорости работы);
- PPMD — немного измененная версия алгоритма PPMdH. Представляет собой другой подход к сохранению данных без потерь, а именно — статистический метод. Хорошо показал себя для сжатия текстов на естественном языке. Как минус можно отметить большой объем оперативной памяти для сжатия, невозможность использовать многопоточность;
- BZip2 — алгоритм BWT, построенный на преобразованиях Барроуза — Уилера. Основной минус — высокая нагрузка на CPU вашего компьютера, медленная скорость работы алгоритма.
Проведя закулисные тесты мы можем сделать выводы:
- алгоритм LZMA отметаем как устаревший;
- PPMD как требовательный к ресурсам и не обладающий хорошей гибкостью при сжатии разных типов файлов. Если вам совсем некуда спешить и сжимаете только определенные типы файлов, от имеет смысл рассмотреть этот вариант;
- BZip2 трудно рекомендовать из-за завышенных требований к компьютерному "железу" и в частности процессору.
А теперь СЮРПРИЗ… остается один алгоритм для использования каждый день — установленный «по умолчанию» LZMA2.
Быстрый, многопоточный, сбалансированный по степени сжатия.
Лучший ли это в мире алгоритм для сжатия данных? Отнюдь нет. Существуют более быстрые, более мощные в плане сжатия. Мы до них еще доберемся в ближайшее время и обязательно рассмотрим.