"Java performance on Arm64" presentation from Devoxx BE

Hi all,

I had the honour of speaking last week at Devoxx BE - I will admit to being a bit nervous about it, because this is a big Java event, and it’s been a while since I was a full time Java developer. But I was talking about some of the ways that the JVM has improved its performance over the last 10 years, since the first aarch64 port of the JVM (Java 8). The video is online! I am aware of some errors I made in my content, and also have some great ideas for how to improve this content for future presentations, but would love general feedback on questions/suggestions that you have.

Thanks!
Dave.

2 Likes

Bonus points for anyone who can point out and correct any of my mistakes!

I’ll start: Intrinsics and running native code are not the same thing. Intrinsics are “intrinsic instructions” - that is, functions that the JVM implements with platform-specific machine code - they are not library functions.

For example, the string function indexOf has a number of implementations. One is in Java, using array manipulation, and provides a “works everywhere” fallback implementation. There are a number of other implementations written specifically for aarch64 (for different data types) that basically write assemby routines to perform the indexOf function, you can see it here: jdk/src/hotspot/cpu/aarch64/c2_MacroAssembler_aarch64.cpp at 395e404666e51f76270de4de1899aa681ba889c9 · openjdk/jdk · GitHub

Anyone see any other big errors or omissions?

Dave.