Skip to content

Производительность и потребление памяти

Обзор

Stack Size Adjuster спроектирован для максимальной производительности, нулевых накладных расходов памяти и отсутствия раздувания NBT.


⚡ Ключевые оптимизации производительности

  1. Хранение в примитивах: Лимиты хранятся в volatile int полях в StackSizeManager, что обеспечивает время доступа $O(1)$ без блокировок при любых запросах.
  2. Нулевое раздувание NBT: В отличие от модов, внедряющих теги в каждый предмет, Stack Size Adjuster перехватывает кодеки ванильных компонентов (DataComponents.MAX_STACK_SIZE) и ExtraCodecs.intRange(1, Integer.MAX_VALUE). Размер сохранений не увеличивается ни на байт.
  3. Отсутствие слушателей тиков: Мод не выполняет никаких вычислений в игровых циклах (EndTick, WorldTick). Код работает исключительно по требованию.
  4. Потокобезопасные переопределения: Внешние правила хранятся в CopyOnWriteArrayList<BiFunction<Item, Integer, Integer>>, обеспечивая безопасную итерацию.

📊 Замеры производительности памяти и процессора

МетрикаРезультатМеханизм оптимизации
Выделение памяти в куче$< 50\text{ КБ}$Ноль временных объектов при проверке стаков
Размер сохранений мира$+0\text{ Байт}$Модификация кодека компонентов
Нагрузка на такт сервера (MSPT)$0.00\text{ мс}$Чтение примитивов без блокировок; нет тиков
Разрушение контейнера (MSPT)$< 0.50\text{ мс}$Ограничение сущностей через InventoryDropHelper

Official documentation & web portal for Dasik Igaijinn mods.