Другие языки:

SourceForge.net Logo

Максимальное практическое сжатие: WinRK, LPAQ, CCM(x), UHARC, FreeArc, 7-zip, Squeez и Durilca'Light

Среди современных программ упаковки есть такие, что ориентированы на максимальное сжатие, но имеют недопустимо малую скорость (1-100 кб/с): paq, uda, durilca, slim. С другой стороны находятся архиваторы с умеренным сжатим при высокой скорости и функциональности: rar, sbc. Между ними находятся программы, кредо которых можно определить как максимальное практическое сжатие. Это WinRK/rolz3, LPAQ, CCM(X), UHARC, FreeArc, 7-zip, Squeez и DURILCA'light. Я постарался расположить их в порядке убывания сжатия, но надо заметить, что это достаточно плотная группа — без учёта мультимедиа-сжатия, разница в размерах архивов между ними находится в пределах 10%, и результаты сжатия могут больше зависеть от конкретных сжимаемых данных, нежели от общих тенденций. Замечу также, что lpaq, ccm, ppmd, durilca, uharc -mx — это симметричные алгоритмы (т.е. им для распаковки нужно столько же времени, сколько и для упаковки), а остальные — асимметричные (распаковка идёт в 10 и более раз быстрее упаковки). Кстати говоря, все приведённые в этой статье скорости работы относятся к современным двухядерным процессорам с частотой порядка 2.5 ГГц. Теперь перейдём к характеристикам отдельных программ.

  • WinRK поддерживает много алгоритмов сжатия, нас сейчас интересует только ROLZ3 в варианте Best Asymmetric, обеспечивающий наилучшее сжатие с приемлемой скоростью распаковки (>100 кб/с). По сравнению с ccm и uharc он сжимает данные медленнее, зато распаковывает быстрее (порядок скоростей: упаковка 400 кб/с, распаковка 2мб/с). WinRK также поддерживает SFX, многотомность, шифрование. У него великолепный GUI. Словом, WinRK выглядит просто замечательной программой. У него всего один недостаток — он не работает. В моих тестах в 10-20% случаев он вылетал при создании архива или не мог распаковать его. Возможно, вам повезёт больше (я сжимал большие наборы файлов), но я настоятельно рекомендую не использовать WinRK. Увы, автор забросил работу над программой.
  • LPREPAQ: это LPAQ, дополненный библиотеками precomp и PackJPG для перепаковки уже сжатых данных (zip, pdf, gif, jpg и т.д.).
  • LPAQ: симметричный алгоритм со скоростью порядка 350 кб/с. Пофайловый упаковщик, что означает, что вам придётся использовать TAR для создания архивов. Наилучшие результаты показывает на текстовых файлах, заметно обходя все остальные программы этой группы. Единственная, помимо 7-zip, программа в группе, не включающая мультимедиа-сжатие.
  • CCMX: симметричный алгоритм со скоростью порядка 800 кб/с. Пофайловый упаковщик.
  • CCM: симметричный алгоритм со скоростью порядка 1 мб/с, уступает CCMX в сжатии 1-3%.
  • UHARC: в режиме -m3 безнадёжно отстаёт от 7-zip, поэтому интерес представляет только высший режим сжатия -mx. Это симметричный алгоритм со скоростью порядка 400 кб/с. Максимальный размер словаря — всего 32 мб, поэтому на больших объёмах данных (сотни мб) UHARC по степени сжатия сдвигается к нижнему краю спектра (среди других рассмотренных здесь программ). Архиватор с базовым набором возможностей и поддержкой SFX. Нет обновления архивов. Общий объём данных в архиве ограничен 2 Гб. Есть несколько независимых GUI-оболочек, делающих удобной работу с его архивами.
  • FreeArc 0.40: поддерживает алгоритмы сжатия LZMA и PPMD с автоматическим выбором между ними (по расширению файла) плюс дополнительные фильтры, поэтому обходит 7-zip по степени и скорости сжатия: 1 мб/с упаковка, 2-20 мб/с распаковка (медленнее для PPMD, быстрее для LZMA). Используемые в нём приёмы (интеллектуальная сортировка файлов, поиск совпадений на дистанции до 1 гб) делают его наиболее эффективным на больших объёмах данных, где он сдвигается к верхней границе группы. Поскольку выбор метода сжатия проводится на основе анализа расширений файлов — сдаёт при сжатии файлов необычных типов или без расширений. Полноценный архиватор с быстрым обновлением солид-архивов, богатыми возможностями шифрования и восстановления архивов, поддержкой плагинов для FAR и Total Commander, unix-версией. По надёжности всё ещё далёк от 7-zip.
  • FreeArc 0.36: поддерживает алгоритмы сжатия LZMA и PPMD с автоматическим выбором между ними (по расширению файла), плюс дополнительные фильтры, поэтому обходит 7-zip по степени и скорости сжатия: 1 мб/с упаковка, 2-20 мб/с распаковка (медленнее для PPMD, быстрее для LZMA). Используемые в нём приёмы (интеллектуальная сортировка файлов, поиск совпадений на дистанции до 1 гб) делают его наиболее эффективным на больших объёмах данных, где он сдвигается к верхней границе группы. Поскольку выбор метода сжатия проводится на основе анализа расширений файлов — сдаёт при сжатии файлов необычных типов или без расширений. Полноценный архиватор с быстрым обновлением солид-архивов, богатыми возможностями шифрования и восстановления архивов, поддержкой плагинов для FAR и Total Commander, unix-версией. По надёжности всё ещё далёк от 7-zip.
  • 7-ZIP: используемый по умолчанию алгоритм LZMA резко асимметричен (600 кб/с упаковка, 30 мб/с распаковка). Текстовые файлы лучше сжимает PPMD, который является симметричным алгоритмом (1.5 мб/с), к сожалению автоматический выбор алгоритма сжатия в программе не реализован. 64-битная версия 7-zip может создавать архивы со словарём до 1 Гб, которые затем могут быть распакованы 32-битной версией программы. 7-zip имеет полнофункциональный, хотя довольно аскетичный GUI; 64-битную и linux версии; поддерживает sfx/installer, шифрование, многотомность, солид-архивы с регулируемым размером блока. Такое сочетание высокой функциональности и надёжности, высокой степени сжатия, быстрой распаковки сделало 7-zip наиболее популярным архиватором из всех рассматриваемых здесь.
  • SQUEEZ: 400 кб/с упаковка, 10 мб/с распаковка. Основной алгоритм — модификация алгоритма LHA со словарём до 32 мб, дополненный PPMD для текстов и кучей фильтров с автоматическим переключением между всеми ними. Полноценный архиватор с приятным GUI и 64-битной версией. Поддерживает весь современный джентльменский набор возможностей: шифрование, многотомность, recovery record, sfx, аутенфикацию (цифровую подпись) архивов, логфайл. Единственная платная программа в группе, не считая WinRK.
  • DURILCA'light: почти симметричный алгоритм со скоростью порядка 1.5 мб/с. Представляет собой алгоритм PPMD с дополнительными препроцессорами, увеличивающими степень сжатия текстовых, исполняемых, мультимедийных, табличных данных. При использовании опции -t1 перед упаковкой данных производится их переупорядочивание, что увеличивает степень сжатия, но вчетверо снижает скорость упаковки (скорость распаковки остаётся прежней и даже чуть вырастает). Этот режим позволяет успешно бороться с tar-файлами, в которых данные различных типов могут располагаться вперемешку. Пофайловый упаковщик.

Теперь рассмотрим результаты тестов. Для сравнения в них также включены архиваторы из других групп — как нацеленные на максимальное сжатие, так и более быстрые.

Первая таблица составлена на основании теста Squeeze Chart. Я взял из неё только результаты тестов без использования препроцессоров ecm/precomp, чтобы поставить все программы в одинаковые условия. Кроме того, я вычел из итогов результаты на мультимедиа-файлах, поскольку их сжатие — это отдельная большая тема. Таким образом, получилось прямое сравнение различных архиваторов на достаточно типичных наборах данных. Однако даже в таком виде нельзя говорить, что представленная таблица отражает истину в последней инстанции. Это всего лишь результаты тестов на больших объёмах преимущественно бинарных данных:

Архиватор Время упаковки, сек. Результат, байт Версия Режим упаковки
Сверхплотные
PAQ8o 533,080 941 221 391 SSE2v2 -7
WinRK 334,566 945 147 315 3.0b3 maximum
UDA 95,597 1 021 501 223 0.301  
Durilca   1 053 264 573 0.5 -m1400 -o13
SLIM   1 165 964 430 23d -m800 -o16
Плотные
WinRK 13,430 1 017 124 184 3.0b3 rolz-3 650mb
FreeArc 3,483 1 043 288 254 0.40 -mx
LPAQ 14,832 1 044 521 483 1 8
CCMX 6,099 1 047 940 335 1.23 c7
FreeArc 6,283 1 059 427 416 0.36 -m7
7-zip 4,080 1 071 093 196 4.47 lzma:128mb/ppmd:1gb
Squeez 12,709 1 093 341 205 5.6 32mb ultra
UHARC 11,904 1 113 177 847 0.6b -mx -md32768
Быстрые
SBC 6,503 1 214 428 222 0.970 -m3 -b63 -os
WinRar 2,448 1.304.466.153 3.70b5 -m5
WinZip 3,048 1.422.735.061 11.1  

Вторая таблица составлена из препарированных аналогичным образом данных с http://maxcompress.narod.ru/. Особенностями этого теста являются сравнительно небольшие размеры сжимаемых файлов и засилье исполняемых файлов, которые составляют почти половину тестовых данных. В результате этого LPAQ и FreeArc опустились вниз, а UHARC поднялся вверх, как и две программы, имеющие хорошие специализированные алгоритмы сжатия исполняемых файлов — Durilca/Durilca'Light и 7-zip. Заметим, что WinRK и CCMX сохранили лидерство в своей группе — это программы, которые показывают стабильно высокие результаты в любой ситуации. В этом тесте WinRAR демонстрирует неплохие результаты, но не надо забывать, что по мере роста объёма сжимаемых данных WinRAR будет всё больше отставать от представителей нашей группы из-за своего скромного размера словаря. В данном тесте скорость измерялась на одноядерном Celeron 2.8 ГГц:

Архиватор Скорость упаковки, кб/с Скорость распаковки, кб/с Сжатие, байт
Paq 8 K (-8) 1 1 12 309 664
Durilca 0.5 81 83 12 842 139
Slim 0.23d 27 27 12 886 744
UDA 0.301 21 21 13 288 040
WinRK 3.0.3b Asymmetric 80 300 13 965 155
Durilca 0.5 Light 625 860 14 327 293
CCMx 1.23 (c 6) 420 420 14 341 157
CCM 1.23 (c 6) 500 500 14 474 879
Uharc 0.6b 270 320 14 585 826
Lpaq1 (8) 185 180 14 634 505
7-zip 4.52b 710 2900 14 635 135
FreeArc 0.40b 810 3800 14 849 852
Squeez 5.6 175 2300 14 904 005
WinRAR 3.70 1013 1600 15 146 720
Uharc 0.6b (-m3) 380 2800 15 442 355
SBC 0.970rev2 760 1900 16 036 996
WinZip 11.1 (optimize) 1100 1100 16 069 337

Наконец, за недостатком места просто перечислю, в каком порядке финишировали архиваторы в моём собственном тесте текстового сжатия: LPAQ, CCMX, CCM, FreeArc, UHARC, Durilca'Light, 7-zip. Этот тест содержит наборы данных среднего размера (30-100 мб) и включает наиболее распространённые типы текстовых данных — html, исходники и художественные тексты.

Ну, и напоследок традиционная колонка советов: если вам нужно максимальное сжатие — берите CCMX. Оптимальное сочетание степени и скорости сжатия — CCM или FreeArc. Множество возможностей, GUI, надёжность и скорость — 7-zip. Максимальный набор возможностей и приятный GUI — Squeez.