Что показывает стенд
Полная методика, железо, сырые числа и оговорки. Цифры ниже — не обещание для любого сервера, а сравнение одинаковых сценариев на одной машине.
Стенд и методика
Релизная сборка, плоский мир, обзор 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 | ||||
|---|---|---|---|---|---|---|
| Вход p95 | MSPT | Память | Вход p95 | MSPT | Память | |
| Одновременный вход | 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.6 | 16.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 тиков при 4096 | 56.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, итоговая normal | 348.7 МБ | 1222.6 МБ | 965.2 МБ | 100.0 % |
| B: обзор 32, исходная | 391.4 МБ | 1991.3 МБ | 1330.5 МБ | 94.2 % |
| B: обзор 32, итоговая normal | 351.1 МБ | 1818.4 МБ | 1164.6 МБ | 92.5 % |
| A: обзор 10, итоговая low | 339.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 | Данные, МБ | В секторах, МБ | Сжатие, мкс/чанк | Распаковка, мкс/чанк |
|---|---|---|---|---|
| 1 | 124 | 149 | 69–106 | 40–59 |
| 3 | 90 | 116 | 156–204 | 38–67 |
| 6 | 85 | 113 | 257–340 | 41–66 |
| 9 | 83 | 110 | 2020 | 38–67 |
Оговорки
- Это одна машина и по два прогона на сценарий. Разброс между прогонами виден в диапазонах; не переносите разницу на любое железо.
- Профиль с коровами сравнивает нагрузку, а не одинаковую работу: AI коров в Chunkwake ещё сверяется с ванилью.
- Настройки мира, которые Chunkwake пока не применяет, нельзя считать эквивалентными ванили. Скорость не заменяет проверку поведения.
- Память — пик процесса под конкретным сценарием, а не рекомендация по
-Xmxдля JVM. Для плагинов всё ещё нужна Java 25+. - Это не результат с плагинами: стенд запускает ядро без пользовательских плагинов.
Воспроизведение
Соберите лабораторию и релизный сервер, затем повторите прогон. Лаборатория скачает server.jar по манифесту Mojang, если он не указан, и проверит Java 25+.
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. Если числа на этой странице расходятся с исходниками, верьте исходникам.