Назад к бенчмарку

CUBR-0037 · прозрачность

Методология бенчмарков

Как измеряется каждое число на этом сайте — чтобы вам не приходилось верить нам на слово. Корпуса, точные флаги, метрика и проверки, которые делают тихое мошенничество невозможным.

1. Корпуса — на чём мы измеряем и почему

Мы используем стандартные, публично скачиваемые корпуса, на которых сошлась область сжатия. Они выбраны не в угоду Cubrim — это те же файлы, по которым судят любой серьёзный компрессор, охватывающие все типы данных, включая те, где Cubrim сейчас проигрывает.

Silesia (≈212 МБ) — современный эталонный набор: исполняемые файлы, изображения, медицинские снимки, структурные бинари, базы данных и текст. Намеренно разнородный, чтобы ни одна узкая специализация не выиграла его целиком.

enwik8 — первые 100 МБ дампа английской Википедии, канонический бенчмарк естественного языка (основа Hutter Prize).

Canterbury Corpus — давний академический набор, используемый в исследованиях сжатия с 1997 года.

отлаженный 10-файловый корпус (исторический)

Ранний внутренний набор из 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. Это не среднее рангов по файлам; без взвешивания по скорости, без выборочных единиц.

ratio = compressed_size / original_size  ·  меньше — лучше

4. Почему мы не можем тихо смошенничать

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

Распаковка байт-в-байт, проверяется автоматически

Для каждого файла Cubrim обязан распаковаться обратно в исходник бит-в-бит. Если отличается хоть один байт — результат недействителен и отбрасывается. Сжатие без потерь не может подделать маленькое число, теряя данные — проверка round-trip это ловит.

Конкурентный рельс — без подгонки под файл

Cubrim выбирает наименьшую из своих внутренних схем на каждый вход по фиксированному конкурентному правилу. Он не подкручивает параметры под конкретный файл, поэтому хорошее число отражает кодек, а не ручку, повёрнутую под один случай.

Каждый прогон несёт code_sha

Каждый бенчмарк помечен точным git-коммитом кодека, который его произвёл. Числа воспроизводимы против этого конкретного коммита — а не движущейся, непроверяемой цели.

Воспроизведите сами

Готовый воспроизводитель пересобирает весь бенчмарк из публичных источников на вашем железе и сверяет каждый результат с нашим. Девять из десяти архиваторов должны совпасть побайтово, включая все числа Cubrim; rar проверяется по round-trip и ограниченному допуску, потому что он хранит внутри архива временные метки файлов. Расхождение — полезное свидетельство, сообщите о нём.

Запустить воспроизводитель →
этот прогон: code_sha 09ef2bbd00c3 round-trip 24/24 байт-в-байт

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. Открытость

Вся гонка гипотез публична. Каждая идея, каждый замер и каждый вердикт — принят или отклонён — записываются в ленту эволюции по мере событий. Приватного лидерборда нет.