Замеры

Что показывает стенд

Полная методика, железо, сырые числа и оговорки. Цифры ниже — не обещание для любого сервера, а сравнение одинаковых сценариев на одной машине.

Запуск0.6–0.9 су ванили 6.6–11.4 с
Вход 20 ботов, p9511–26 мсу ванили 845–860 мс
Пик памяти182–236 МиБу ванили 845–929 МиБ
Чанк на диске6.9 КБdeflate 6 · у ванили 8.7 КБ

Стенд и методика

Релизная сборка, плоский мир, обзор 2, Java 25 (Temurin) с настройками JVM по умолчанию. По два прогона на сценарий: разминка 20 с, замер 45 с. MSPT — из tick query, TPS — по приращению time query gametime.

CPU
Ryzen 9 7945HX
ОС
Windows 11
Сборка
release, HEAD d3b74fd
Мир
плоский, обзор 2
Боты
20
Разминка / замер
20 с / 45 с
Повторы
2 на сценарий
Java
Temurin 25, настройки по умолчанию

Сквозные сценарии

Вход — p95 задержки подключения. MSPT и память — за тот же прогон. Ниже — лучше; для TPS ниже — хуже.

СценарийChunkwakeВаниль 26.3
Вход p95MSPTПамятьВход p95MSPTПамять
Одновременный вход11.1–25.5 мс0.4–0.5 мс187–188 МиБ845–860 мс2.1–2.6 мс907–929 МиБ
Движение16.4–47.1 мс0.4–0.5 мс182–190 МиБ703–746 мс2.7–3.1 мс860–864 МиБ
Исследование мира25.2–30.4 мс0.8 мс207–209 МиБ698–891 мс3.4–4.3 мс868–877 МиБ
Редстоун, 128 ламп и проводов16.1–16.2 мс0.4–0.5 мс189–190 МиБ897–960 мс3.4–3.5 мс845–859 МиБ
2500 коровTPS 20 / 4.4–8.616.2 мс3.9–5.6 мс230–236 МиБ682–925 мс120–221 мс909–913 МиБ

Запуск сервера: Chunkwake 0.6–0.9 с, ваниль 6.6–11.4 с.

Что нашли по ходу

  • В плоском мире днём появлялись зомби, скелеты, криперы и пауки и убивали ботов: 172 смерти против 30 у ванили. Свет незагруженного столбца читался как 0, а не из шаблона; затемнение неба считалось не по day.json. После исправления обе проверки проходят, смертей нет.
  • Цифры с коровами сняты ещё с лишними монстрами вокруг. Профиль «Простой» без ботов стенд отмечает ошибкой у обоих серверов — это недочёт стенда, а не сервера.

CPU-оптимизации

ЧтоДоПослеПравка
Случайные тики, 400 тиков при 409656.7 с32.5–33.5 с (ваниль 43 с)виды состояний таблицей; листва тикает только при распаде; отложенный пересчёт distance
/fill 32×16×32 (fill_16k)288 мс35 мсодин замок мира, один проход света, одна очередь рассылки на пачку
Запись блока со светом33.5 мкс~28 мкссоседи читаются один раз на наблюдателей, огонь и листву

Память

Замер scripts/measure-memory.ps1: новые миры с сидом 12345, 60 с полёта со скоростью 20 блоков/с, симуляция 6. Private — PrivateMemorySize64 процесса Windows; пик — максимум проб с шагом 2 с; «после» — через 30 с после ухода бота.

ПрофильPrivate в простоеПикПосле 30 сСредний обзор
A: обзор 10, исходная391.5 МБ1317.3 МБ1003.9 МБ100.0 %
A: обзор 10, итоговая normal348.7 МБ1222.6 МБ965.2 МБ100.0 %
B: обзор 32, исходная391.4 МБ1991.3 МБ1330.5 МБ94.2 %
B: обзор 32, итоговая normal351.1 МБ1818.4 МБ1164.6 МБ92.5 %
A: обзор 10, итоговая low339.2 МБ776.6 МБ445.2 МБ99.6 %

Живая куча после полёта при нуле столбцов: 480 → 417 МБ. Приватная память процесса всё равно втрое больше живой кучи: mimalloc удерживает страницы после пика. arena_eager_commit=0 отклонён: в профиле A low он дал 504.1 МБ вместо 445.2 МБ.

Хранилище

Тот же полёт: 13 052 полных чанка. Полный чанк на уровне deflate 6 — 6.9 КБ против 8.7 КБ у ванили. Свободные сектора переиспользуются, повторный бэкап без изменений идёт по жёстким ссылкам.

deflateДанные, МБВ секторах, МБСжатие, мкс/чанкРаспаковка, мкс/чанк
112414969–10640–59
390116156–20438–67
685113257–34041–66
983110202038–67

Оговорки

  • Это одна машина и по два прогона на сценарий. Разброс между прогонами виден в диапазонах; не переносите разницу на любое железо.
  • Профиль с коровами сравнивает нагрузку, а не одинаковую работу: AI коров в Chunkwake ещё сверяется с ванилью.
  • Настройки мира, которые Chunkwake пока не применяет, нельзя считать эквивалентными ванили. Скорость не заменяет проверку поведения.
  • Память — пик процесса под конкретным сценарием, а не рекомендация по -Xmx для JVM. Для плагинов всё ещё нужна Java 25+.
  • Это не результат с плагинами: стенд запускает ядро без пользовательских плагинов.

Воспроизведение

Соберите лабораторию и релизный сервер, затем повторите прогон. Лаборатория скачает server.jar по манифесту Mojang, если он не указан, и проверит Java 25+.

chunkwake-lab benchshell
cargo build -p chunkwake-lab
cargo build --release -p chunkwake-server

chunkwake-lab bench --chunkwake target/release/chunkwake \
  --jar server.jar --accept-vanilla-eula \
  --profile all --bots 20 --warmup 20 --duration 45 --repetitions 2

Цифры взяты из docs/perf.md и docs/lab.md ветки ver/26.3. Если числа на этой странице расходятся с исходниками, верьте исходникам.