CUBR-0037 · прозрачность
Методология бенчмарков
Как измеряется каждое число на этом сайте — чтобы вам не приходилось верить нам на слово. Корпуса, точные флаги, метрика и проверки, которые делают тихое мошенничество невозможным.
1. Корпуса — на чём мы измеряем и почему
Мы используем стандартные, публично скачиваемые корпуса, на которых сошлась область сжатия. Они выбраны не в угоду Cubrim — это те же файлы, по которым судят любой серьёзный компрессор, охватывающие все типы данных, включая те, где Cubrim сейчас проигрывает.
Silesia (≈212 МБ) — современный эталонный набор: исполняемые файлы, изображения, медицинские снимки, структурные бинари, базы данных и текст. Намеренно разнородный, чтобы ни одна узкая специализация не выиграла его целиком.
enwik8 — первые 100 МБ дампа английской Википедии, канонический бенчмарк естественного языка (основа Hutter Prize).
Canterbury Corpus — давний академический набор, используемый в исследованиях сжатия с 1997 года.
Ранний внутренний набор из 10 файлов, использовавшийся на этапе становления. Хранится только как историческая отсылка — числа лидерборда на нём НЕ выдаются за общий результат, именно потому что корпус, под который ты подгоняешься, способен ввести в заблуждение (см. оговорку про overfit ниже).
2. Архиваторы и их точные флаги
Каждый соперник запускается на сильнейшем практичном уровне, чтобы сравнение было честным, а не подстроенным против слабых базовых линий. Это точные вызовы — любой может их воспроизвести:
| архиватор | проверенная версия | флаги | sha256 бинаря |
|---|---|---|---|
| cubrim | 0.3.2 | v0.3.2 published release binary sha256 b6c3cd251f7148c1895f5b85d30d06df8252a70afbd649e269f673a19e2a5768; tag v0.3.2 = commit 09ef2bbd00c359c5485a0ef4c6fd59f464382270, whose only difference from dfb195ef089db738e51153ad4532fdd583f247bf is the version bump, so both produce byte-identical output; full24 RT cmp=0; exactly five verified cell corrections | b6c3cd251f71… |
| gzip | 1.12 | -9 | afea077ce127… |
| bzip2 | 1.0.8 | -9 | 8e728b8ed28f… |
| xz | 5.4.5 | -9e | b5b163eb2732… |
| zstd | 1.5.5 | --ultra -22 | 7c5468b370f7… |
| brotli | 1.1.0 | -q 11 | 01969d4716e4… |
| lz4 | 1.9.4 | -12 | 87c0d5d060fd… |
| ppmd | 7-Zip 23.01 | 7z -m0=PPMd | 60fc00b4e1ed… |
| 7z | 23.01 | -m0=LZMA2 -mx9 | 60fc00b4e1ed… |
| rar | 7.00 | a -m5 | 338274d32151… |
Флаги приходят из валидированного живого payload meta-35. База хранит метки команд, а не версии пакетов; колонка версий взята из контрольного снимка пакетов benchmark-хоста от 2026-07-26 и из проверенного по SHA-256 публичного бинарника Cubrim v0.3.2. Cubrim запускает встроенный конкурентный отбор схем.
Почему часть графиков начинается не с нуля
Коэффициенты сжатия на этом корпусе лежат примерно между 0.19 и 0.38, поэтому столбчатый график от нуля сжал бы все реальные различия в верхнюю треть картинки и спрятал ровно то, ради чего сравнение и делается. Там, где ось усечена, разрыв подписан на самой оси, а точный коэффициент напечатан рядом со столбцом — так что ничего не зависит от чтения длины на глаз. На узких экранах те же данные показываются двумя подписанными группами вместо разрыва оси.
Что значит «competitive» у Cubrim competitive
У других архиваторов в таблице стоит фиксированный уровень сжатия (gzip -9, zstd --ultra -22). У Cubrim единого «уровня» нет. Для каждого файла кодер соревновательно пробует несколько внутренних схем кодирования значений — битпак, RLE-коды, контекстный Huffman и семейство BWT с geomix-смешиванием — измеряет каждую и записывает в архив наименьшую, помечая её одним байтом-идентификатором схемы. Поскольку выбирается минимум из кандидатов и из прежнего лучшего результата, новая схема не может ухудшить старую — отбор структурно защищён от регрессий. Поэтому «competitive (built-in scheme selection)» в колонке Cubrim — это не уровень, а архитектура: кодек сам подбирает лучшую схему под конкретные данные.
3. Метрика
Мы приводим коэффициент сжатия — сжатый размер, делённый на исходный. Меньше — лучше. Группы файлов и общий лидерборд считаются size-weighted: Σ сжатых байт ÷ Σ исходных байт по выбранным файлам, тем же методом, что у Silesia/lzbench. Это не среднее рангов по файлам; без взвешивания по скорости, без выборочных единиц.
4. Почему мы не можем тихо смошенничать
Три свойства делают результаты самопроверяемыми. Это не обещания — это механические ограничения, встроенные в то, как запускается бенчмарк.
Распаковка байт-в-байт, проверяется автоматически
Для каждого файла Cubrim обязан распаковаться обратно в исходник бит-в-бит. Если отличается хоть один байт — результат недействителен и отбрасывается. Сжатие без потерь не может подделать маленькое число, теряя данные — проверка round-trip это ловит.
Конкурентный рельс — без подгонки под файл
Cubrim выбирает наименьшую из своих внутренних схем на каждый вход по фиксированному конкурентному правилу. Он не подкручивает параметры под конкретный файл, поэтому хорошее число отражает кодек, а не ручку, повёрнутую под один случай.
Каждый прогон несёт code_sha
Каждый бенчмарк помечен точным git-коммитом кодека, который его произвёл. Числа воспроизводимы против этого конкретного коммита — а не движущейся, непроверяемой цели.
Воспроизведите сами
Готовый воспроизводитель пересобирает весь бенчмарк из публичных источников на вашем железе и сверяет каждый результат с нашим. Девять из десяти архиваторов должны совпасть побайтово, включая все числа Cubrim; rar проверяется по round-trip и ограниченному допуску, потому что он хранит внутри архива временные метки файлов. Расхождение — полезное свидетельство, сообщите о нём.
Запустить воспроизводитель →5. Честность как принцип
- Мы публикуем текущую правду, в том числе когда старый обзор устарел. В meta-35 Cubrim первый во всех шести агрегатах по типам: на text у Cubrim 0.176001 против 0.201379 у PPMd; на exe у Cubrim 0.244212 — впереди 7z с 0.274874, xz с 0.275453 и Brotli с 0.284998. Оставшиеся измеренные проигрыши относятся к файлам: на xargs.1 у Brotli 0.346344 против 0.380175 у Cubrim; на nci у xz 0.043192 и у Brotli 0.045293 против 0.046335 у Cubrim.
- Мы публикуем тупики. Гипотезы, которые не сработали, остаются NO-GO-карточками в ленте эволюции, с измеренной причиной провала — не удаляются.
- Мы открыто признаём overfit. Ранний рубеж (H-24) обошёл gzip на отлаженном корпусе, но оказался в 2,2 раза хуже gzip на непересекающемся holdout — мы задокументировали эту регрессию, а не спрятали, и именно поэтому теперь начинаем с мировых корпусов.
- Мы ре-валидируем при смене датасета. Переход на новый корпус означает измерение заново; результат честен ровно настолько, насколько свежи данные, против которых он проверялся.
6. Открытость
Вся гонка гипотез публична. Каждая идея, каждый замер и каждый вердикт — принят или отклонён — записываются в ленту эволюции по мере событий. Приватного лидерборда нет.