Java 9 performance optimizations

Jeroen Borgers jborgers at
Tue Oct 27 17:05:04 UTC 2015


I would much appreciate it if someone can shed more light on this topic and
share some new insights.
Does startup time actually improve substantially? Can optimizations
actually be more aggressive resulting in a speedup? How does it work? Would
be nice to know some highlights/examples.

I hope you can help me a bit on this for my JUG talk on the topic next week.



2015-10-27 1:39 GMT+01:00 Vitaly Davidovich <vitalyd at>:

> Is there more info on aggressive lambda inlining? If it's what I think it
> is, it would be very useful performance wise.
> sent from my phone
> On Oct 25, 2015 12:51 PM, "Jeroen Borgers" <jborgers at> wrote:
>> Hi,
>> One of the goals of Jigsaw I read here:
>> is:
>> *Enable ahead-of-time, whole-program optimization techniques*  -
>> [..]
>> The optimization techniques envisioned here include, but are not limited
>> to: Fast lookup of both JDK and application classes; early bytecode
>> verification; aggressive inlining of, *e.g.*, lambda expressions, and
>> other
>> standard compiler optimizations; construction of JVM-specific memory
>> images
>> that can be loaded more efficiently than class files; ahead-of-time
>> compilation of method bodies to native code; and the removal of unused
>> fields, methods, and classes. These kinds of techniques tend to work best
>> when JDK and application code is analyzed together, prior to run time.
>> [..]
>>    -
>>    *Optimize existing code as-is* — It must be possible to apply the
>>    optimizer tool to existing code already packaged in traditional jar
>> files,
>>    without changing those files.
>>    -
>>    *Actual optimizations* — As a proof of concept, provide at least two
>>    optimizations that deliver nontrivial performance benefits.
>> My questions are:
>> * What is the current state? Which techniques/optimizations are already
>> implemented and available from the current ea JDK 9 or will be?
>> * Are there any new insights/developments in this area?
>> * I noticed in my JMH microbenchmark with parallelstream and lambda's that
>> it runs slightly faster on 9_b85 compared to 8_u66. Could this be caused
>> by
>> more aggressive inlining of lambda's?
>> * It seems to me that some compilation and optimization work is moved from
>> runtime to link time, this will only be beneficial in limited cases,
>> right?
>> Are there obvious cases?
>> * I don't really see why aggressive inlining and std optimizations can now
>> be more effective. Because there will be less de-optimization events
>> needed
>> because of better predictability? Can in-lining now take place in two
>> ways,
>> between platform modules and application? Through interfaces?
>> Thanks!
>> -Jeroen

More information about the jigsaw-dev mailing list