Não sei porque ficou mais lento. De novo AOT não consegue fazer milagres. Não testei com PGO, mas mesmo assim acredito que ficaria mais lento. Assim que tiver um tempo vou testar GraalVM com PGO.
$ native-image --gc=G1 -R:+AlwaysPreTouch -R:InitialHeapSize=4g -R:MaxHeapSize=4g \
-R:InitialHeapSize=512m -R:MaxHeapSize=1024m -march=native \
-cp target/coralbench-all.jar com.coralblocks.coralbench.example.IntMapBenchmark \
-o target/graal/IntMapBenchmark --no-fallback -O3 --initialize-at-build-time
$ ./target/graal/IntMapBenchmark 0 10000000 5000000
Arguments: warmup=0 measurements=10000000 mapCapacity=5000000
Benchmarking put...
Measurements: 10,000,000 | Warm-Up: 0 | Iterations: 10,000,000
Avg Time: 41.110 nanos | Min Time: 25.000 nanos | Max Time: 21.841 millis
75% = [avg: 29.000 nanos, max: 31.000 nanos]
90% = [avg: 29.000 nanos, max: 32.000 nanos]
99% = [avg: 30.000 nanos, max: 41.000 nanos]
99.9% = [avg: 30.000 nanos, max: 100.000 nanos]
99.99% = [avg: 30.000 nanos, max: 339.000 nanos]
99.999% = [avg: 30.000 nanos, max: 1.573 micros]
Benchmarking get...
Measurements: 10,000,000 | Warm-Up: 0 | Iterations: 10,000,000
Avg Time: 24.560 nanos | Min Time: 19.000 nanos | Max Time: 15.679 micros
75% = [avg: 22.000 nanos, max: 25.000 nanos]
90% = [avg: 23.000 nanos, max: 26.000 nanos]
99% = [avg: 23.000 nanos, max: 39.000 nanos]
99.9% = [avg: 24.000 nanos, max: 97.000 nanos]
99.99% = [avg: 24.000 nanos, max: 382.000 nanos]
99.999% = [avg: 24.000 nanos, max: 550.000 nanos]
Benchmarking remove...
Measurements: 10,000,000 | Warm-Up: 0 | Iterations: 10,000,000
Avg Time: 35.800 nanos | Min Time: 23.000 nanos | Max Time: 165.095 micros
75% = [avg: 30.000 nanos, max: 33.000 nanos]
90% = [avg: 30.000 nanos, max: 36.000 nanos]
99% = [avg: 31.000 nanos, max: 93.000 nanos]
99.9% = [avg: 32.000 nanos, max: 123.000 nanos]
99.99% = [avg: 32.000 nanos, max: 457.000 nanos]
99.999% = [avg: 34.000 nanos, max: 63.089 micros]