Portable Profilers And Where to Find Them

Many JVMs implement so called just-in-time (JIT) compilation that takes place at application’s run time. In particular, that provides an opportunity to gather execution profile and find the hottest methods, which are then recompiled with higher optimization level to achieve best performance.

In contrast, Excelsior JET uses ahead-of-time (AOT) compilation as the main compilation mode. This means that classes are compiled down to native code before execution if possible. There is also no such thing as recompilation of a class or a method at run time. However, profile guided optimizations (PGO) are still possible with AOT. The main difference is that the profile data has to be be collected by the application developer by running the application in profiling mode and then fed to the compiler.

Continue reading