Minecraft и GraalVM

428
41
108
Доброго времени суток, меня уже достаточно давно терзает вопрос о пересборке Java-версии майна в самодостаточный бинарник с помощью GraalVM Native Image.
1) Это вообще реально? (за адекватные временные рамки естественно) Насколько я знаю, грааль плохо дружит с рефлексией, а сколько ее в ванили (и где она там используется) - пока без понятия. (Ладно, ручками переписать несколько событий, и напрямую вставить свою логику в нужное место, но не все же переписывать) Единственную рефлексию, где и находил - так это Forge/Spoonge/Fabric (+события, и загрузка модов) и эти ,,миксины,, (Буду отталкиваться от кода 1.12.2 который дольше всего исследовал в поисках ответов на свои вопросы)

2) ,,Стоит ли шкура выделки ?,, (С точки зрения фпс и потребления памяти. Насколько я видел, в майне достаточно классов, которые выполняют свою работу, а после чего могут быть собраны сборщиком мусора, а сборки native image лешены этой возможности, однако полное приложение занимает значительно меньше оперативы)

Хотел бы взвесить все ,,За,, и ,,Против,, перед тем, как начинать, однако что-то мне подсказывает что это не самая простая задача, но и точно (или хотя бы приблизительно) оценить время пока не могу. Не хотелось бы браться за проект, который изначально обречен на провал
 
1,074
72
372
Боюсь что с майном сделать не получится, уж слишком много различных костылей применяется. Не только рефлексия, есть ещё ASM - работа с байт-кодом на лету.
 

tox1cozZ

aka Agravaine
8,455
598
2,892
Нет. Абсолютно бестолковая идея.
Нативный образ нужен для моментального старта приложения.
AOT компилятор и рядом не стоял с JIT по оптимизациям кода, то есть у тебя ещё и медленнее игра работать будет.
Никакого буста ты не получишь, наоборот будет деградация.
 
Последнее редактирование:
428
41
108
Статический компилятор и рядом не стоял с JIT по оптимизациям кода
Вообще не думал, что нативный образ проигрывает по скорости, локальные тесты проходят +-одинаково (в рамках погрешности)
Тут остается только согласится, что идея бредовая.
 

tox1cozZ

aka Agravaine
8,455
598
2,892
JIT во время работы приложения собирает данные и на их основе проводит более эффективные оптимизации.
AOT же такой прелести не имеет. Да, в энтерпрайз версии грааля можно собрать данные со своего приложения и закинуть ему этот профиль. Но для майна и в целом игр, мне кажется это не подходит от слова совсем.
 
428
41
108
JIT во время работы приложения собирает данные и на их основе проводит более эффективные оптимизации.
AOT же такой прелести не имеет
Оно крайне ситуативное (в зависимости от кода) - или ,,обычный компилятор,, отработает нормально, или тратить дополнительное время на сбор статистики и докомпиляцию, или перекомпиляцию (сначала алгоритму долго кормят ,,удобные данные,, а потом ,,неудобные,,) + еще на пересылку данных время тратится.
 
Сверху