So we don't even know if it actually makes things faster? Startup are a none issue, CPU / memory is but you need proof for that.
Graal does not support ZGC or Shenandoah so it's hard to say if the G1 version from Graal is up to speed.
So we don't even know if it actually makes things faster? Startup are a none issue, CPU / memory is but you need proof for that.
Graal does not support ZGC or Shenandoah so it's hard to say if the G1 version from Graal is up to speed.
The students "measured noticeable reductions in terms of memory footprint of up to 43%" [1] in some preliminary experiments. More from the accompanying blog post:
"We also hope that the Minecraft community builds on our work and helps benchmark different configurations for native Minecraft servers in more detail and in larger settings."
Please feel free to share any numbers on CPU/memory usage with us!
[1] https://medium.com/graalvm/native-minecraft-servers-with-gra...
If I understand the article correctly, you're preempting all possibly unoptimized/expensive code paths (reflection) by attempting to literally execute all of them? While it's a cool experiment, isn't it a bit error-prone (besides being a lot of effort of course, but playing Minecraft on the side does sound pretty fun!)?
The thing was built to address the burgeoning embedded w/ a little horsepower market with its variety of hardware and OSes.
Now it runs Enterprise server software… and Minecraft.
There are certainly pathological cases where it could cause major issues.
AOT suffers from not having runtime information, so anything involving dynamic dispatch (which is REALLY heavily used in java) will be a lot harder to optimize. JITs get to cheat because they know that the `void foo(Collection bar)` method is always or usually called with an `ArrayList`. PGO is the AOT world's answer to this problem, but it generally explodes build times and requires real world usage.
In java land, there's also the option of "AppCDS" which can cut down a large portion of that compilation time between processes.
https://www.graalvm.org/22.2/examples/java-performance-examp...
(Side note: this was when I was co-maintaining MCPC so was typically with mods installed and they heavily use NBT which I suspect is where a lot of that string allocation was happening.)
lets you spawn new game instances on the fly, reduce time spent loading the chunks and game data
you save a lot of money when you scale, and you improve latency, people don't complain with huge loading time and stutters for fresh servers
ask anybody working on the industry
fun fact, that's the first thing Riot did when they acquired Hytale
They rewrote their C# client to C++ for portability
And they rewrote their Java server to C++ for performance (and cost saving)
Tech Change: https://hytale.com/news/2022/7/summer-2022-development-updat...
Yes it is. Developing any short term job -- that runs multiple seconds and goes away -- like lambda or k8s jobs with Java is meaningless for exactly this reason. The startup time is longer than the run time.
First time I hear about MultiPaper, another idea I had which I din't know someone was already working on LOL. It's a pretty promising idea considering the current performance problems of the game. This could possibly allow thousands of players in the same server which would be AMAZING, almost a completely different game. Imagine if MultiPaper was compiled to native using GraalVM.