fermishell 26.05.2011 13:27
Бенчмарки — Бесхитростное оффлайновое сравнение нескольких программ сжатия
Тест без претензий на полноту охвата, строгость методики и знание алгоритмов. Скорее всего, будет редактироваться по мере уточнения деталей и для расширения общей картины.Таблица с моими результатами: http://paste.pro/1713084.
В основном, взяты компрессоры, устанавливающиеся из штатных репозиториев распостранённых дистрибутивов.
Современная классика gzip (библиотека называется zlib), более свежий bzip2, ещё свежее XZ ( lzma-2), и некоторое количество программ с буквой Z, чьи суффиксы реже попадаются на глаза, но весьма заслуживающих внимания. Интерес будет преимущественно к быстрым компрессорам, отлично жмущие, но медленные я рассматривать не буду.
XZ сжимает файлы существеннно лучше, чем bzip2 и, тем более, gzip, но делает это медленно. lzop жмёт очень быстро, но слабее. Кроме XZ, lzma реализован в компрессоре lzip. Он ориентирован на возможность независимого восстановления файлов из архива, и к нему есть многопоточная реализация plzip. В настоящий момент сделана и многопоточная реализация gzip - pigz. Многопоточный bzip2 называется pbzip2.
В 1990х годах А. Триджелл с соавторами придумал программы rsync и rzip. Развитием rzip стал lrzip, написанный Коном Коливасом, автором известного bfq-планировщика, призванного улучшить отзывчивость линукс-десктопов годы назад, но так и не включенного в апстрим. В lrzip в качестве бэкендов добавлены все вышеупомянутые алгоритмы ( rzip использовал bz2).
Наконец, есть семейство очень быстрых компрессоров. Реально очень быстрых. Вот ссылка на сравнение сжатия некоторых данных ( DirectX SDK samples): http://altdevblogaday.org/2011/04/22/survey-of-fast-compression-algorithms-part-1/. Из него я позаимствовал легкодоступные quicklz ( в таблице qpress), lzf и fastlz ( в таблице 6pack), а также lz4*. Недавно отрытый Google под BSD-2 лицензией snappy уже доступен как библиотека libsnappy1 в Дебиане и Убунте.
В жизни компрессоров, кроме более-менее разовых событий обработки файлов, встречаются возможности подключения zlib- и lzo- сжатия в файловых системах btrfs (zlib с 2.6.29 ядра, lzo - с 2.6.38 ядра) и reiser4 ( а также ZFS с zlib и lzjb вместо lzo). Обзоры Фороникса, касающиеся сжатия в btrfs: lzo на HDD, zlib на SSD.