AdvanceCOMP — это набор консольных утилит для «пересжатия» уже сжатых форматов: ZIP-архивов, PNG-изображений, MNG-клипов и файлов на Deflate внутри контейнеров GZ/TGZ/SVGZ. Его сильная сторона — выжимать из Deflate-сжатия максимально компактный размер, не меняя содержимое файлов на уровне данных (без потерь), а в ряде случаев — не меняя даже структуру контейнера, заменяя только сжатые блоки.
Что именно входит в AdvanceCOMP и за что отвечает каждая утилита
В составе AdvanceCOMP четыре основных инструмента:
- advzip — работа с ZIP: создание/листинг/извлечение, тестирование целостности и главное — перепаковка (recompress) ради уменьшения размера архива.
- advpng — перепаковка PNG ради уменьшения размера (ориентирован на PNG-снапшоты; умеет «чистить» вспомогательные чанки и перекладывать IDAT).
- advmng — перепаковка MNG-клипов (видео-снапшотов), включая оптимизации Delta/Move для кадров с небольшими изменениями и скроллинг-фоном, плюс режимы сборки MNG из PNG и извлечения PNG-кадров.
- advdef — перепаковка Deflate-потока внутри контейнеров .png, .mng, .gz, .tgz, .svgz без изменения внутренней структуры контейнера (меняются только сжатые данные).
Кому и когда реально нужен AdvanceCOMP
AdvanceCOMP особенно полезен, когда:
- есть большие коллекции (ROM-наборы, ассеты, архивы снапшотов/клипов), где экономия даже 1–3% превращается в гигабайты;
- важна безопасная оптимизация без потерь, без перекодирования и изменения исходных данных;
- требуется пакетная обработка в командной строке: одна команда на сотни/тысячи файлов;
- нужно «дожать» Deflate, когда стандартные
zip -9/gzip -9уже не дают заметного эффекта.
По назначению инструмент исторически заточен под коллекции эмуляции (rom/snap/clip), но механика пересжатия Deflate хорошо ложится и на практичные задачи: подготовка дистрибутивов, оптимизация SVGZ-иконок, ужатие логов .gz, перепаковка ZIP-архивов с ресурсами.
Установка и проверка, что всё работает
Ниже — базовый старт, который закрывает 90% сценариев.
Windows (официальные сборки)
AdvanceCOMP распространяется готовыми ZIP-пакетами под Windows (x86 и x64) — скачиваете архив, распаковываете, добавляете папку с advzip.exe/advpng.exe/advdef.exe/advmng.exe в PATH (или запускаете из этой папки).
macOS (Homebrew)
Установка одной командой:
brew install advancecomp
Linux (APT и аналоги)
На Debian/Ubuntu пакет обычно называется advancecomp и ставится через менеджер пакетов:
sudo apt install advancecomp
Сборка из исходников (универсально)
Если ставите из исходников, типовой процесс выглядит так: ./configure, make, make check, make install.
./configure
make
make check
sudo make install
Быстрая проверка
После установки проверьте, что утилиты запускаются и видны системе:
advzip -V
advpng -V
advdef -V
advmng -V
Как устроена «пересжатие» в AdvanceCOMP и почему оно даёт выигрыш
AdvanceCOMP не «придумывает новый формат», а переупаковывает существующие контейнеры так, чтобы дефлейт-потоки (Deflate) были сжаты эффективнее. В типовой логике утилиты:
- распаковывают исходный поток;
- сжимают заново другим компрессором/настройками;
- выбирают результат меньшего размера (а если включён
--force, могут принять новый файл даже если он чуть больше).
Ключевой момент — в режимах -2/-3/-4 используются разные компрессоры/стратегии, и баланс «время/размер» может отличаться на порядки:
-2— нормальный режим (по умолчанию) на libdeflate: быстрый и обычно даёт ощутимый выигрыш против классического zlib.-4— «insane» (zopfli): часто даёт ещё пару процентов, но время может вырасти очень сильно, поэтому разумно управлять итерациями через-i.-0— режим «store» (по сути отключение сжатия там, где оно бессмысленно), полезно для ZIP-архивов с уже сжатыми файлами (PNG/MP3 и т. п.).
Дальше — практическая часть: как именно пользоваться каждым инструментом, какие ключи реально важны и какие схемы дают стабильный результат.
advzip: перепаковка ZIP-архивов максимально компактно
advzip — самый «универсальный» инструмент набора: он умеет и обслуживать ZIP (листинг/извлечение), и проверять целостность, и перепаковывать архивы. Основная цель — получить минимально возможный размер ZIP при сохранении содержимого.
Команды и ключи, которые используются чаще всего
1) Просмотр содержимого
advzip -l archive.zip
-l, --list показывает список файлов внутри ZIP.
2) Проверка целостности ZIP
advzip -t archive.zip
-t, --test делает тест архива; с -p, --pedantic включает более строгие/расширенные проверки.
Практический шаблон:
advzip -t -p archive.zip
Это удобный шаг перед тем, как запускать длительную перепаковку на «insane» уровне.
3) Перепаковка (главная функция)
Базовая перепаковка в нормальном режиме:
advzip -z -2 archive.zip
-z, --recompress запускает перепаковку, а -2 задаёт режим «normal» на libdeflate (дефолт).
Агрессивная перепаковка (максимум размера, минимум скорости):
advzip -z -4 -i 20 archive.zip
-4, --shrink-insane включает zopfli, -i, --iter N задаёт число итераций для режимов -3/-4. На практике итерации — главный рычаг «сжать ещё, но дольше».
4) Сохранение времени файла ZIP
Если важно не менять timestamp архива при перепаковке:
advzip -z -2 -k archive.zip
-k, --keep-file-time сохраняет время файла .zip.
5) Когда полезен -0 (store)
В ZIP-архивах, где лежат уже сжатые форматы (например, PNG и MP3), повторное Deflate-сжатие часто даёт минимальный выигрыш при заметной цене по CPU. Для таких случаев:
advzip -z -0 assets.zip
Режим -0 отключает сжатие и фактически «нормализует» контейнер без попытки выжимать Deflate; это экономит ресурсы и может быть полезно, когда важнее скорость/простота.
Экспериментальный режим LZMA (-N) и почему его обычно не используют
advzip умеет включать 7-Zip LZMA через -N, но с важным ограничением: получившийся ZIP не будет совместим с большинством программ, пока вы не перепакуете его обратно без -N. Этот режим имеет смысл только в закрытых пайплайнах, где архивы читаются строго вашим же инструментарием.
Практический сценарий: «дожать» ZIP-архивы коллекции
Рабочая схема для большого набора архивов:
- быстрый прогон на
-2, чтобы получить «почти максимум» быстро; - точечно запуск
-4на самых крупных архивах, где потенциальная экономия измеряется мегабайтами.
Пример (Linux/macOS, рекурсивно):
find ./roms -name "*.zip" -print0 | xargs -0 -n 1 advzip -z -2
А для «топ-N» крупных файлов уже запускать -4 -i отдельно (вручную или скриптом по размеру).
advpng: оптимизация PNG путём перепаковки и очистки чанков
advpng делает то, что в повседневной практике называют PNG-оптимизацией без потерь: убирает лишнее, собирает данные компактнее и перепаковывает Deflate-часть. Внутри он применяет стратегии вроде удаления ancillary-чанков и объединения IDAT-частей, после чего заново сжимает данные.
Базовые команды
1) Список/информация по файлам
advpng -l *.png
-l, --list выводит информацию по указанным PNG.
2) Пересжатие
Нормальный режим (быстро и эффективно):
advpng -z -2 *.png
Максимальное сжатие (дольше):
advpng -z -4 -i 20 *.png
Ключи -z, -2, -4, -i работают по той же логике, что и в advzip: выбираете баланс «скорость/размер», а итерации управляют временем на агрессивных режимах.
3) Принудительно принять новый файл
Если нужно перезаписать результат даже когда он получился чуть больше (например, когда важна «нормализация» структуры PNG под единый стиль пайплайна):
advpng -z -2 -f image.png
-f, --force принудительно принимает новый вариант.
В каких случаях advpng даёт максимум
- PNG-снапшоты/скриншоты с «мусорными» метаданными и дополнительными чанками;
- большие PNG с множеством IDAT-фрагментов (часто в экспортерах);
- партии PNG, которые нужно привести к более компактному виду перед упаковкой/доставкой.
Важная особенность совместимости
advpng рассчитан на PNG-файлы определённого «профиля» и ориентирован на файлы, генерируемые средой AdvanceMAME; именно на таких данных он гарантированно читает структуру и применяет свои оптимизации.
Если вы оптимизируете «произвольные» PNG из разных редакторов, на практике чаще выбирают связку advdef (для контейнеров) + отдельные PNG-оптимизаторы (см. сравнение ниже), а advpng оставляют именно под поток снапшотов.
advdef: пересжатие Deflate внутри PNG/MNG/GZ/TGZ/SVGZ без изменения структуры контейнера
advdef — один из самых полезных инструментов набора, потому что он работает «поверх» контейнеров и меняет только то, что реально нужно: сжатые Deflate-данные. В описании утилиты прямо заявлено: структура файлов не меняется, изменяются только сжатые блоки.
Где это особенно практично
- SVGZ (сжатые SVG): можно «дожать» иконки/векторные ассеты для веба и приложений;
- GZ (логи, дампы, бэкапы), где компрессия по умолчанию была не максимальной;
- TGZ (tar.gz) как контейнер, если важна экономия и вы готовы подождать на
-4.
Команды
Нормальный режим:
advdef -z -2 file.svgz
advdef -z -2 logs.gz
Максимальный режим:
advdef -z -4 -i 15 file.svgz
И принудительная замена результата:
advdef -z -2 -f file.gz
Ключи и логика совпадают с остальными утилитами набора.
Ограничение по очень большим файлам
У advdef есть принципиальное ограничение: для пересжатия ему требуется память под полный объём и сжатых, и распакованных данных. Поэтому «огромные» файлы он не предназначен пересжимать.
Практический вывод: advdef отлично подходит для типичных .svgz, обычных .gz логов и умеренных .tgz, но не стоит планировать им обработку гигантских архивов на сотни гигабайт.
advmng: перепаковка MNG-клипов, сборка из PNG и извлечение кадров
advmng — специализированный инструмент для MNG (анимации/клипы), который помимо пересжатия Deflate использует возможности формата: Delta (сжатие различий между кадрами) и Move (оптимизация клипов со скроллинг-фоном).
Три режима, которые используют чаще всего
1) Пересжатие MNG
Быстрый «разумный» вариант:
advmng -z -2 *.mng
Компромисс «размер/время» с оптимизациями под клипы и уменьшением палитры:
advmng -z -r -S 16 *.mng
Именно такой пример как «хороший баланс» приводится в примерах: -r (reduce) и -S 16 (scroll-square) ускоряет обработку скроллинга.
2) Создание MNG из последовательности PNG
advmng -a 30 video.mng frame*.png
-a, --add RATE MNG_FILE PNG_FILES... собирает клип с заданной частотой кадров (целое число). Важно: исходные PNG должны быть одинакового размера и битности.
3) Извлечение PNG-кадров из MNG
advmng -x video.mng
-x, --extract извлекает все PNG-кадры. Утилита извлекает кадры как 24-битные изображения с альфа-каналом; при необходимости альфу можно убрать опцией -n.
Ключевые опции advmng, которые дают реальный эффект
-s, --scroll HxV— задаёт размер паттерна (ширина×высота), который используется для распознавания скроллинга. Есть практические советы по подбору: часто достаточно-s 8x8, а для однонаправленного скролла ускоряют вычисления вариантами-s 16x0или-s 0x16.-S, --scroll-square N— аналог-s NxN, но с ограничением на «крупные движения» по двум осям (X+Y<=N), что снижает время расчёта.-r, --reduce— попытка редукции цвета до 8 бит (реально срабатывает, если кадры укладываются в <256 цветов и нет альфы; с альфой можно принудить через-n).-e, --expand— расширение цвета до 24 бит (когда это нужно для совместимости/стандартизации).-c, --lcи-C, --vlc— режимы совместимости MNG LC/VLC, отключают delta-сжатие (а VLC ещё и точный тайминг); используют, когда важнее совместимость, чем максимальная компрессия.-v, --verbose— подробный вывод, полезен на больших клипах, чтобы видеть прогресс.
Практические рецепты: как применять AdvanceCOMP в реальных пайплайнах
Ниже — схемы, которые дают стабильный результат и не превращают оптимизацию в бесконечный тюнинг.
Рецепт 1. «Быстро и эффективно» для ZIP-архивов (универсально)
Если у вас много ZIP и нужно «дожать» без многочасового CPU-марафона:
advzip -z -2 *.zip
-2 — дефолтный «normal» на libdeflate, ориентирован на хороший баланс.
Дополнительно:
- перед массовой перепаковкой прогнать выборочно
advzip -t -pна репрезентативной выборке архивов; - если архивы потом выкладываются в репозиторий/хранилище и важно не трогать время файла — добавлять
-k.
Рецепт 2. «Максимум сжатия» на самых больших ZIP
Здесь смысл только на крупных файлах:
advzip -z -4 -i 15 big_archive.zip
Начинайте с -i 10..15, поднимая итерации только если реальная экономия оправдывает время.
Рецепт 3. «Сжать SVGZ-ассеты без перекодирования»
Для .svgz advdef — прямой инструмент:
advdef -z -2 icons.svgz
advdef -z -4 -i 15 icons.svgz
Поскольку advdef не меняет структуру контейнера, вы получаете тот же формат .svgz, но с более эффективным Deflate.
Рецепт 4. «Сжать логи .gz так, чтобы меньше занимали место»
advdef -z -2 *.gz
А если логов немного, но они крупные и хранятся долго:
advdef -z -4 -i 10 *.gz
Важно помнить про ограничение по очень большим файлам из-за потребления памяти (для гигантских .gz это может быть критично).
Рецепт 5. Работа с MNG-клипами (оптимизация под «скролл»)
Для клипов со скроллинг-фоном выгодно включать -S или -s:
advmng -z -r -S 16 *.mng
Если вы знаете, что скролл строго вертикальный, можно ускорять расчёты паттерном вроде -s 0x16.
На что обращать внимание, чтобы не получить неожиданный результат
1) Всегда разделяйте «нормализацию» и «экономию байтов»
- Для нормализации пайплайна иногда используют
--force, чтобы получить единый стиль упаковки даже ценой пары байт. - Для строгой экономии —
--forceвыключают и полагаются на механизм выбора меньшего результата.
2) Не включайте «insane» по умолчанию на всём подряд
-4 (zopfli) может дать небольшой выигрыш, но время растёт резко. Практика AdvanceCOMP — сначала прогон -2, затем «insane» только для файлов, где экономия оправдывает затраты.
3) Помните про совместимость экспериментальных режимов
В advzip режим -N создаёт ZIP, который не читается обычными архиваторами, пока вы не перепакуете обратно без -N. Это отдельный режим, его нельзя «случайно включить» в публичный релиз.
4) Учитывайте тип контейнера: advpng vs advdef
- если задача — именно оптимизация PNG-снапшотов с «правильной» структурой,
advpngделает это напрямую, дополнительно «чистя» чанки; - если задача — пересжать Deflate-данные в контейнере без изменения структуры,
advdefдаёт более предсказуемую механику для.gz/.tgz/.svgz.
Сравнение с аналогами
AdvanceCOMP пересекается сразу с несколькими классами инструментов — архиваторы (ZIP/GZ) и оптимизаторы изображений (PNG). Ниже — сравнение по практическим сценариям.
Таблица: что выбрать под задачу
| Задача | AdvanceCOMP | OptiPNG | pngcrush | oxipng | 7-Zip |
|---|---|---|---|---|---|
| Перепаковка ZIP ради меньшего размера | advzip: ориентирован на минимизацию и тест архива; есть режимы -2/-4, итерации, pedantic-проверка |
нет | нет | нет | да, но чаще как «универсальный архиватор», а не специализированный recompress ZIP |
| Тест целостности ZIP | advzip -t, есть -p для расширенных проверок |
нет | нет | нет | частично (зависит от режима тестирования) |
| Оптимизация PNG без потерь | advpng/advdef: пересжатие + «очистка» в advpng; сильная сторона — Deflate-часть | да | да | да | нет |
Пересжатие .gz/.tgz/.svgz без смены формата |
advdef работает прямо по контейнеру | нет | нет | нет | gzip/7z могут пересоздавать контейнер, но логика отличается |
| Оптимизация MNG (Delta/Move, скролл) | advmng специализирован под MNG | нет | нет | нет | нет |
| Скорость при хорошем результате | -2 (libdeflate) быстрый |
обычно средняя/высокая | чаще медленнее | высокая (Rust) | зависит от настроек |
| «Выжать максимум любой ценой времени» | -4 (zopfli) + -i |
есть режимы, но механика другая | есть перебор вариантов | есть агрессивные профили | можно «дожимать», но это другой класс задач |
С точки зрения «комплекта» утилит AdvanceCOMP закрывает сразу несколько направлений: ZIP + Deflate-контейнеры + MNG. PNG-оптимизация у него сильна именно как часть общего пайплайна под коллекции снапшотов/клипов, а для «произвольных» PNG из дизайна и веб-графики часто используют OptiPNG/pngcrush/oxipng как более универсальные оптимизаторы.
Скачать AdvanceCOMP
Варианты загрузок
- Очистка системы от мусора
- Оптимизация автозагрузки
- Ускорение работы Windows
- Нет графического интерфейса
- Режим -4 может работать очень долго
- Ограничения по памяти на очень больших файлах
FAQ
Чем AdvanceCOMP отличается от обычного zip -9 и gzip -9?
AdvanceCOMP делает именно пересжатие и использует другие реализации/режимы Deflate (например, нормальный режим на libdeflate и «insane» на zopfli), плюс в advzip есть механика выбора наименьшего результата между старым/новым/несжатым вариантом. На больших партиях файлов это даёт систематический выигрыш по размеру при контролируемом времени.
Какие режимы использовать по умолчанию?
Для массовых задач почти всегда достаточно:
advzip -z -2для ZIP,advdef -z -2для GZ/TGZ/SVGZ,advmng -z -r -S 16для MNG-клипов, если есть скролл/однотипные кадры.
-4 подключайте точечно для крупных файлов, когда есть смысл ждать.
Зачем нужны итерации -i?
Итерации управляют тем, сколько «попыток» делает агрессивный компрессор в режимах -3/-4. Больше итераций обычно даёт чуть меньший размер, но резко увеличивает время работы.
Почему advdef может не подойти для очень больших файлов?
Потому что при пересжатии ему требуется память и под сжатые, и под распакованные данные целиком; на огромных файлах это становится ограничением по RAM.
Можно ли использовать AdvanceCOMP на Windows без установки?
Да. Достаточно распаковать официальный ZIP-пакет под Windows (x86 или x64) и запускать .exe из папки либо добавить её в PATH.
Какая актуальная версия и что менялось в последних релизах?
В ветке 2.x среди последних релизов указана версия 2.6 (2023/10) с обновлением libdeflate до 1.19; перед ней — 2.5 (2023/01) с фиксом падения на некорректном размере MNG и 2.4 (2022/11) с исправлениями CVE и обновлением libdeflate.
Итог: когда AdvanceCOMP — лучший выбор
AdvanceCOMP рационально ставить, когда у вас есть поток «тяжёлых» данных на Deflate: ZIP-архивы, GZ/TGZ/SVGZ, снапшоты/клипы и любые сценарии, где важна пакетная оптимизация размера без потерь. Его практическая ценность — в простых командах (-z -2 для быстрого выигрыша и -z -4 -i N для точечного максимума), в чётко разнесённых задачах между advzip/advdef/advpng/advmng и в том, что утилиты хорошо встраиваются в скрипты и CI как «последний этап дожима».