Hacker News new | ask | show | jobs
by openasocket 2950 days ago
(Slightly off-topic) My understanding was that HotSpot and other JITs are able to to profile-guided optimizations and the like (such as a polymorphic inline cache) to produce the best possible assembly. How does the assembly produced by these AOT compilers compare? Fast startup time and reduced memory footprint is great, but how will performance compare on compute-intensive workloads?
2 comments

You can use Graal for both JIT and AOT workloads. The JIT version works just like hotspot, but it's better with memory allocation and collection due to better optimizations. I have yet to see an application where it has performed worse than hotspot, although they may exist.

Ive read that the EE version can do PGO (you profile the app in a profiling mode, outputting a profile file which is used in a subsequent AOT compile), but I personally have no desire to talk to an oracle salesman ever again, so I'll just stick to JIT.

you can use profile guided optimisations when building a native image with GraalVM. You'll need to run your code in a special way under the desired load to gather the profile information, then it can be used when building the native image. YMMV, but the results can be quite interesting, here for example someone compiled http4s: https://twitter.com/lukasz_bialy/status/989091065033625606
Interesting. It seems it's a feature unique to the the GraalVM Enterprise Edition. Is there any official policy or statement on what makes it into CE vs EE? I think a there are a lot of questions around that that always crop up. PGO being unique to EE would feel more reasonable than say partial escape analysis. (Though I fully acknowledge Oracle's right to do so with work they fund.)

If the open source project (CE) is under GPL, doesn't that restrict contributions from making it upstream to EE?

Companies like oracle typically require copyright transfer for contributions. This allows them to use differently for their enterprise version since they are the only copyright holder.