Максимальное практическое сжатие: 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.