Производительность и потребление памяти
Обзор
Stack Size Adjuster спроектирован для максимальной производительности, нулевых накладных расходов памяти и отсутствия раздувания NBT.
⚡ Ключевые оптимизации производительности
- Хранение в примитивах: Лимиты хранятся в
volatile intполях вStackSizeManager, что обеспечивает время доступа $O(1)$ без блокировок при любых запросах. - Нулевое раздувание NBT: В отличие от модов, внедряющих теги в каждый предмет, Stack Size Adjuster перехватывает кодеки ванильных компонентов (
DataComponents.MAX_STACK_SIZE) иExtraCodecs.intRange(1, Integer.MAX_VALUE). Размер сохранений не увеличивается ни на байт. - Отсутствие слушателей тиков: Мод не выполняет никаких вычислений в игровых циклах (
EndTick,WorldTick). Код работает исключительно по требованию. - Потокобезопасные переопределения: Внешние правила хранятся в
CopyOnWriteArrayList<BiFunction<Item, Integer, Integer>>, обеспечивая безопасную итерацию.
📊 Замеры производительности памяти и процессора
| Метрика | Результат | Механизм оптимизации |
|---|---|---|
| Выделение памяти в куче | $< 50\text{ КБ}$ | Ноль временных объектов при проверке стаков |
| Размер сохранений мира | $+0\text{ Байт}$ | Модификация кодека компонентов |
| Нагрузка на такт сервера (MSPT) | $0.00\text{ мс}$ | Чтение примитивов без блокировок; нет тиков |
| Разрушение контейнера (MSPT) | $< 0.50\text{ мс}$ | Ограничение сущностей через InventoryDropHelper |
