Yesterday, an interresting patch was pushed into the hotspot compiler (JITs) workspace, with this summary "Infrastructure for tiered compilation support", exciting isn't it.

Tiered compilation in hotspot is an old dream. Hotspot has two JITs named c1 aka client JIT and c2 aka server JIT. The client JIT starts fast but provides less optimizations so it is used for GUI application. The server JIT starts more slowly but provide very good optimizations.
The idea of tiered compilation is to get the best of both compilers, first JITs the code with c1 and then if the code is really hot to recompile it with c2.

As I said, tiered compilation in hotspot is an old dream, the flag -XX:+TieredCompilation exists since 2006 but the performance was not great.

I quickly compile a new VM with the new tiered architecture and use it to run eclipse. Wow, it's impressive, eclipse is snappy, at least a lot of snappier than with the server compiler, the compilation time of some projects of mine is clearly faster. Oh, and it crashes only once :)

Then I decide to run the DaCapo Jython benchmark. Here are the result:

As you can see, performance of tiered compilation is much better than the client JIT performance.

cheers,
Rémi