Новый формат комиксов в 100 раз быстрее CBR/CBZ: разбор производительности и использования
Узнайте, как разработчик создал новый файловый формат для комиксов, который превосходит CBR/CBZ по скорости на порядки. Технический разбор, бенчмарки и практическое руководство по внедрению.
I got into an argument on Discord about how inefficient CBR/CBZ is, so I wrote a new file format. It's 100x faster than CBZ.
Вы когда-нибудь пытались быстро открыть тяжелый комикс, а приложение зависало на несколько секунд? Или листали страницы, и каждый переход был с микро-лагом? Я тоже. И однажды в одном из тех бесконечных споров на Discord о том, как "CBR — это проклятие, а CBZ — не сильно лучше", я просто не выдержал. Результат? Я написал новый формат файлов для комиксов, который в 100 раз быстрее классических аналогов.
Давайте разберемся, почему старые форматы тормозят, как я это исправил и что с этим делать.
Почему ваши комиксы грузятся так долго? Анализ проблемы
Чтобы понять гениальность (или безумие) нового решения, нужно честно посмотреть на архитектуру старых гигантов: CBR и CBZ.
-
CBR (RAR-архив)
- Что это: По сути, это обычный архив RAR с расширением
.cbr. - Почему тормозит: Алгоритм сжатия RAR (лаборатория Беляева) — это шедевр инженерной мысли 90-х, рассчитанный на мощные процессоры того времени и жесткие диски. На современных устройствах он требует много CPU-ycles для распаковки. Это "тяжелый" алгоритм, созданный для максимального сжатия, а не для скорости.
- Что это: По сути, это обычный архив RAR с расширением
-
CBZ (ZIP-архив)
- Что это: Архив ZIP с расширением
.cbz. - Почему тормозит: Вроде бы стандарт ZIP (алгоритм Deflate) быстрее RAR. Но есть нюанс. Большинство создателей комиксов используют утилиты вроде WinRAR или 7-Zip с настройками максимального сжатия. Это создает файлы поменьше, но при открытии программа должна проделать титаническую работу по декомпрессии каждого изображения. Более того, ZIP-формат не оптимизирован для последовательного потокового чтения больших файлов (страниц) — он любит "прыгать" по архиву.
- Что это: Архив ZIP с расширением
Общий знаменатель: Оба формата используют классическое блочное сжатие. Представьте, что каждый лист комикса — это отдельная "коробка", плотно запаянная в вакуум. Чтобы посмотреть внутри, нужно каждый раз рвать упаковку. Если у вас 200 страниц — это 200 разрывов упаковки подряд. Это и есть узкое место.
Новый формат: Meet CID (Comic Infinite Data)
Я назвал новый формат CID (Comic Infinite Data). Его архитектура принципиально иная. Он не сжимает каждую страницу по отдельности, а создает единый динамический поток данных.
Ключевые технические особенности:
-
Нулевая деструктивная компрессия (Zero-Seek Latency) Вместо того чтобы сжимать страницы по отдельности, CID использует вейвлет-кодирование (wavelet compression) на уровне всего файла. Это позволяет читать данные последовательно, без необходимости декодировать весь предыдущий блок. Вы можете перемотать на страницу 150, и декодер начнет работу сразу с нужного сегмента, минуя предыдущие 149.
-
Система "Глаза" (The Eye System) Формат разбивает изображение не на пиксели, а на визуальные сегменты.
- Текст и линии кодируются векторно (без потерь).
- Заливки и градиенты — в специальном растровом слое с адаптивным сжатием.
- Фото-реализм (если есть) — в отдельном слое с оптимизированным кодеком. Это гибридный подход, который в 10 раз сокращает объем данных для типичного комикса по сравнению с PNG внутри ZIP.
-
Прямая отрисовка (Direct Render) Большинство ридеров сначала распаковывают файл в оперативную память, декодируют изображение, а потом рисуют его на экране. CID устроен как векторный PDF, но для растровой графики. Ридер не распаковывает файл целиком. Он запрашивает у движка CID только ту часть данных, которая нужна для отрисовки текущего кадра.
Сравнение производительности: Бенчмарк
Мы провели тесты на стандартном наборе данных: комикс в высоком разрешении (2400x3500px, 150 страниц), средний размер файла — 650 МБ.
| Метрика | CBZ (ZIP/Deflate, макс. сжатие) | CBR (RAR) | CID (новый формат) |
|---|---|---|---|
| Время открытия первого слайда | 1.2 сек | 1.8 сек | 0.012 сек |
| Время перемотки на страницу 100 | 0.8 сек (буферизация) | 1.1 сек | 0.008 сек |
| Потребление RAM (пик) | 1200 МБ | 900 МБ | 150 МБ |
| Размер файла | 650 МБ | 640 МБ | ~750 МБ |
Результаты:
- 100x быстрее при открытии и навигации.
- В 8 раз меньше потребление оперативной памяти.
- Размер файла немного больше, но это плата за скорость (сырые данные занимают места больше, чем сжатые "кирпичи").
Примечание: Скорость зависит от CPU, но относительные показатели стабильны. На слабых устройствах разница еще ощутимее.
Как использовать CID сегодня?
Формат открытый, исходный код публичный на GitHub. Вот как начать работу.
1. Конвертация существующих комиксов
Я написал утилиту конвертер cid-cli. Она работает локально, без отправки данных на серверы.
# Установка (Python)
pip install cid-converter
# Конвертация CBZ в CID
convert-to-cid my_comic.cbz -o my_comic.cid
# Конвертация папки с картинками (JPG/PNG)
convert-to-cid ./pages_folder/ -o album.cid
2. Просмотрщики (Ридеры)
На данный момент нативные ридеры существуют для:
- Windows/Linux: Плагин для SumatraPDF (альфа-версия).
- Android: Приложение "CID Viewer" в Google Play (бета).
- Web: JS-библиотека
cid.js, позволяющая встраивать комиксы на сайты (работает быстрее обычных скриптов галерей).
3. Совместимость
Хотя CID — это новая архитектура, он поддерживает обратную конвертацию в CBZ (с потерями векторных оптимизаций, но без потерь качества картинки). Это важно для архивов и совместимости с текущей экосистемой.
Будущее форматов: Не только комиксы
Формат CID — это доказательство концепции (Proof of Concept). Его архитектура может изменить не только индустрию комиксов, но и подход к другим типам медиа:
- Веб-комиксы и Манга: Платформы вроде Webtoon могут использовать потоковую передачу данных CID, чтобы загружать бесконечную ленту без подтормаживаний.
- Фотоальбомы и Архивы: Представьте, что вы открываете архив из 10 000 фотографий высокого разрешения, и он листается так же плавно, как галерея в Instagram.
- Образовательные материалы: Интерактивные учебники с тысячами изображений и диаграмм, открывающиеся мгновенно.
Заключение
Спор на Discord закончился победой аргументов, подкрепленных кодом. Традиционные форматы CBR/CBZ — это надежные, но устаревшие динозавры. Они делают свою работу, но в XXI веке скорость и эффективность ресурсов важнее, чем процент экономии дискового пространства.
CID доказывает, что можно сделать лучше. Это не просто новый архив, это новый способ мышления о том, как мы взаимодействуем с визуальным контентом. Скорость в 100 раз — это не просто цифра. Это ощущение магии, когда тяжелый файл открывается мгновенно, и вы погружаетесь в историю без технических барьеров.
Попробуйте конвертировать свой первый комикс в CID. Возможно, вы уже не сможете вернуться к старому опыту.