Experimental Performance
Экспериментальный мод для Minecraft на Fabric, который оптимизирует производительность за счёт уменьшения размера классов Chunk, Block и Entity в кэше процессора. Даёт прирост FPS на слабых ПК.
Experimental Performance - это экспериментальный мод для Minecraft (Fabric), который лезет в самые низкоуровневые механизмы игры ради прироста FPS. Если вы когда-нибудь задумывались, почему Майнкрафт лагает даже на мощных ПК, одна из причин - неэффективное распределение памяти в классах игры. Мод пытается это исправить.
Как это работает
Процессор работает с данными блоками по 64 байта - это кэш-линия. Если объект занимает больше 64 байт, процессору приходится делать несколько проходов, что замедляет работу. Experimental Performance уменьшает размер ключевых классов так, чтобы они укладывались в одну кэш-линию.
Оптимизация чанков (Chunk)
Обычный чанк занимает 80 байт - уже больше одной кэш-линии. Мод с помощью Fabric ASM "вырезает" лишние переменные из класса Chunk и перенаправляет вызовы. В результате чанк весит 64 байта, а операции с ним становятся быстрее примерно на 25% (0.25x). На практике это значит меньше микро-лагов при загрузке и обновлении чанков.
Оптимизация блоков (Block)
Блоки тоже тяжеловаты - 72 байта. Мод выносит часть данных в отдельный класс BlockInfo, уменьшая основной класс до 64 байт. Это ускоряет передачу блоков между компонентами игры и не даёт некоторым блокам перевалить за 128 байт (что потребовало бы уже 3 кэш-линии).
Оптимизация сущностей (Entity)
Сущности - настоящий кошмар: 272 байта, то есть 5 кэш-линий. Неудивительно, что толпы мобов или предметов на земле вызывают просадки FPS. Experimental Performance сокращает размер до 4 кэш-линий (примерно 256 байт). Дальше автор пока не полез - слишком много совместимости с другими модами ломается. Если мод станет популярным, возможно, он перепишет весь класс Entity и сделает API.
Почему Mojang не делает то же самое?
На самом деле они пытались - например, класс LevelInfo когда-то уже оптимизировали похожим образом. Но в последние годы разработчики Minecraft не особо заморачиваются производительностью. Классы распухают, а Mojang вносит странные изменения, которые не решают проблему глобально. Так что Experimental Performance - это попытка сообщества взять дело в свои руки.
Игра в кошки-мышки
Оптимизация - сложная штука. Чтобы выиграть в скорости на одних операциях, приходится жертвовать памятью или добавлять дополнительные вызовы. Автор честно говорит: его мод увеличивает количество аллокаций и вызовов методов, но итоговый выигрыш в производительности перекрывает эти потери. На практике вы этого даже не заметите.
Экспериментальный статус
Важно: мод очень сырой и использует "грязные" ASM-трюки. Автор не рекомендует включать его в сборки модов и не обещает совместимости с другими модами. Это proof of concept - доказательство того, что можно выжать больше FPS за счёт уменьшения размера классов в кэше. Тесты показывают явный прирост, но мод требует доработки. У автора сейчас нет времени продолжать разработку.
Тем не менее, если вы хотите поэкспериментировать и выжать максимум из своего ПК - скачайте Experimental Performance и проверьте сами. Только делайте бэкапы и не удивляйтесь возможным багам.