graalvm

pez 2024-12-15T11:07:39.813699Z

What’s the story of PGO for Clojure programs? I could use native-image to shave away the start time of JVM and Clojure for the Languages project. For the billion loops benchmark it creates a binary that starts in 4ms and crunches at near C speed. https://github.com/bddicken/languages/pull/255 Then I wanted to see if I could use PGO to get more optimized compilation, but in my first and only try, using https://www.graalvm.org/latest/reference-manual/native-image/guides/optimize-native-executable-with-pgo/ straight of the shelf, performance dropped by almost 100%. I let the profiler run for some 3 minutes, so maybe that was too little, but mostly I think I am holding things wrong.

pez 2024-12-15T11:09:57.078779Z

Using Java 23, if that matters. The benchmark is running all languages at the same time and because reasons it is too involved to use different versions of Java between the JVM and GraalVM.

borkdude 2024-12-15T11:10:26.757799Z

yeah PGO should work that way but if it doesn't... don't know

pez 2024-12-15T11:12:57.507139Z

Is there some tool I can load the profiling dump in to maybe get an idea of what’s going on?

borkdude 2024-12-15T11:14:09.303459Z

no idea other than the docs... probably the GraalVM community slack is the best place to ask (native-image channel)

👀 1