Java Performance Degradation in JDK7 and JDK8

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Wed Apr 29 13:55:56 UTC 2015


For the records - this is what I get with JDK 8u45 (x64)- on Linux x64:

warning: [options] bootstrap class path not set in conjunction with 
-source 1.6
Note: generated_ttcn/TTCN3_CommonDefs.java uses or overrides a 
deprecated API.
Note: Recompile with -Xlint:deprecation for details.
1 warning

real    0m35.347s
user    1m43.281s
sys    0m1.806s

If you only experience the problem with x64 JDK, is it possible that we 
are staring more at a VM/runtime issue?

Maurizio

On 29/04/15 14:12, Maurizio Cimadamore wrote:
> On 29/04/15 12:44, Jacob Wieland wrote:
>> Hello Maurizio,
>>
>> are you sure that you used the 64bit versions of javac? I could only 
>> observe the behavior with these.
> Yep I'm on a Ubuntu x64 machine. It's actually pretty standard 
> hardware too - i.e. intel i5 (two cores, but OS sees 4 because of 
> hyper-threading).
>> Also, I just tried with jdk8u31-64b and it takes AGES (still running 
>> after 17 minutes where the jdk6 was done after 2), top shows 4GB VIRT 
>> memory use and 350 % load (on a 4core processor).
> Maybe the reproducer you sent was incorrect?
>
> Maurizio
>>
>> So, I don't think it was that problem.
>>
>> 2015-04-29 12:00 GMT+02:00 Maurizio Cimadamore 
>> <maurizio.cimadamore at oracle.com <mailto:maurizio.cimadamore at oracle.com>>:
>>
>>     These are the numbers I'm getting:
>>
>>     JDK 9 (b42)
>>
>>     Note: generated_ttcn/TTCN3_CommonDefs.java uses or overrides a
>>     deprecated API.
>>     Note: Recompile with -Xlint:deprecation for details.
>>
>>     real    0m46.306s
>>     user    2m17.489s
>>     sys    0m2.166s
>>
>>     JDK 8 (GA)
>>
>>     Note: generated_ttcn/TTCN3_CommonDefs.java uses or overrides a
>>     deprecated API.
>>     Note: Recompile with -Xlint:deprecation for details.
>>
>>     real    6m58.748s
>>     user    8m43.546s
>>     sys    0m2.132s
>>
>>     JDK 7 (1.7.0_79)
>>
>>     Note: generated_ttcn/TTCN3_CommonDefs.java uses or overrides a
>>     deprecated API.
>>     Note: Recompile with -Xlint:deprecation for details.
>>
>>     real    0m28.341s
>>     user    1m17.194s
>>     sys    0m1.886s
>>
>>
>>     As you can see there is a significant regression from JDK 7 to
>>     JDK 8 which was caused by
>>
>>     https://bugs.openjdk.java.net/browse/JDK-8043253
>>
>>     (some stack trace analysis revealed the familiar pattern). This
>>     has also been fixed in JDK 8u20 (as stated in the bug evaluation).
>>
>>     So, while JDK 8u20/9 is slower than JDK 7 (at least on my
>>     machine), the numbers are more or less in the same ballpark and
>>     the huge regression that was visible in earlier JDK 8 releases
>>     has now been fixed.
>>
>>     If you are still experiencing the problem - can you please also
>>     submit the specific compiler versions you are using in your
>>     benchmark?
>>
>>     Maurizio
>>
>>
>>
>>     On 29/04/15 10:29, Maurizio Cimadamore wrote:
>>>     Hi Jacob,
>>>     Stay assured - as we'll definitively look into this issue (I see
>>>     it's already assigned to one of my colleagues).
>>>
>>>     What I can say (w/o looking too much at the attached artifacts)
>>>     is that in general, javac has no issue with compiling a lot of
>>>     sources at once; at one point the build system was structured in
>>>     such a way that all the JDK classes were compiled at once - and
>>>     that (which is way more than your 187 sources - i.e. at least
>>>     10x that) took less than 20 seconds. SO there must some specific
>>>     pattern triggering that issue.
>>>
>>>     Given that you say you have 187 input sources and 48K output
>>>     classes, I'd say you are using inner classes a lot. I wonder if
>>>     you are hitting this:
>>>
>>>     https://bugs.openjdk.java.net/browse/JDK-8000316
>>>
>>>     Maurizio
>>>
>>>     On 24/04/15 09:49, Jacob Wieland wrote:
>>>>     Hello Folks,
>>>>
>>>>
>>>>     I still have the open problem
>>>>     https://bugs.openjdk.java.net/browse/JDK-8039262 that the javac
>>>>     performance has degraded significantly from 1.6 to 1.7 (and
>>>>     even worse to 1.8) in the 64bit versions. Since in our context,
>>>>     we are dealing with a lot of generated source1.4 Java input
>>>>     (either split into very large files with inner classes or big
>>>>     packages with lots of smaller classes), compiler performance is
>>>>     critical for our tool and this degradation forces us to
>>>>     continue recommending to our customers to use Java 1.6 for
>>>>     large projects (as is the norm) as 1.7 and 1.8 are pretty much
>>>>     unusable in this respect.
>>>>
>>>>     Is anyone still working on this issue or is such significant
>>>>     performance degradation not a serious issue?
>>>>
>>>>     My observations so far are:
>>>>     - it gets worse the more class files are being compiled/the
>>>>     more files reside in the source path
>>>>     - cpu usage goes through the roof over all available kernels
>>>>     - memory usage is much higher
>>>>     - garbage collection seems to be much more active
>>>>
>>>>     Using -proc:none alleviates the problem slightly for the 1.7
>>>>     version, but not for 1.8 (last we tested with
>>>>     jdk1.8.0_31) where the performance difference is a factor 5 or
>>>>     more!
>>>>
>>>>     I can understand that a more advanced compiler has capabilities
>>>>     that a previous version does not have and thus sometimes has
>>>>     to do more work. But, it should still be possible (especially
>>>>     if given the -source 1.4 or -source 1.5 option as we do) to
>>>>     optimize it in such a way that unnecessary checks for generics,
>>>>     overriding methods, closures, annotations and other newer
>>>>     features can be turned off (if they are to blame, which I
>>>>     actually doubt from my observations).
>>>>
>>>>     I would really appreciate your help in this regard and I think
>>>>     everyone would benefit from any bugfix you can offer for this.
>>>>
>>>>     BR, Jacob Wieland
>>>>
>>>>     -- 
>>>>     -- 
>>>>     ------------------------------
>>>>     -------------------------------------------
>>>>     Dr. Jacob Wieland
>>>>     Senior Software Engineer
>>>>
>>>>     Testing Technologies IST GmbH
>>>>     Michaelkirchstraße 17/18
>>>>     10179 Berlin, Germany
>>>>
>>>>     Phone +49 30 726 19 19 34      Email wieland at testingtech.com
>>>>     <mailto:stanca at testingtech.com>
>>>>     Fax +49 30 726 19 19 20      Internet www.testingtech.com
>>>>     <http://www.testingtech.com>
>>>>     ---------------------------------------------------------------------------------------------------------------
>>>>
>>>>     -----------------------------------------------------------------------------------------------------------------
>>>>
>>>>     UPCOMING EVENTS
>>>>
>>>>     SUBMIT YOUR TOPIC for the UCAAT 2015
>>>>     Deadline: May 30, 2015
>>>>     ucaat.etsi.org/2015/CallForPresentations.html  <http://ucaat.etsi.org/2015/CallForPresentations.html>
>>>>
>>>>     Apr 21-23, 2015 | SAE Conference & Exhibition
>>>>     Detroit, Michigan, USA
>>>>     www.sae.org/congress/  <http://www.sae.org/congress/>
>>>>
>>>>     Apr 28-30, 2015 | iqnite
>>>>     Dusseldorf, Germany
>>>>     www.iqnite-conferences.com/de/index.aspx  <http://www.iqnite-conferences.com/de/index.aspx>
>>>>     -----------------------------------------------------------------------------------------------------------------
>>>>     Geschäftsführung: Theofanis Vassiliou-Gioles, Stephan Pietsch,
>>>>     Pete Nicholson Handelsregister HRB 77805 B, Amtsgericht
>>>>     Charlottenburg Ust ID Nr.: DE 813 143 070 This email may
>>>>     contain confidential and privileged material for the sole use
>>>>     of the intended recipient. Any review, use, distribution or
>>>>     disclosure by others is strictly prohibited. If you are not the
>>>>     intended recipient (or authorized to receive for the
>>>>     recipient), please contact the sender by reply email and delete
>>>>     all copies of this message.
>>>
>>
>>
>>
>>
>> -- 
>> -- 
>> ------------------------------
>> -------------------------------------------
>> Dr. Jacob Wieland
>> Senior Software Engineer
>>
>> Testing Technologies IST GmbH
>> Michaelkirchstraße 17/18
>> 10179 Berlin, Germany
>>
>> Phone +49 30 726 19 19 34        Email wieland at testingtech.com 
>> <mailto:stanca at testingtech.com>
>> Fax +49 30 726 19 19 20  Internet www.testingtech.com 
>> <http://www.testingtech.com>
>> ---------------------------------------------------------------------------------------------------------------
>>
>> -----------------------------------------------------------------------------------------------------------------
>>
>> UPCOMING EVENTS
>>
>> SUBMIT YOUR TOPIC for the UCAAT 2015
>> Deadline: May 30, 2015
>> ucaat.etsi.org/2015/CallForPresentations.html  <http://ucaat.etsi.org/2015/CallForPresentations.html>
>>
>> Apr 21-23, 2015 | SAE Conference & Exhibition
>> Detroit, Michigan, USA
>> www.sae.org/congress/  <http://www.sae.org/congress/>
>>
>> Apr 28-30, 2015 | iqnite
>> Dusseldorf, Germany
>> www.iqnite-conferences.com/de/index.aspx  <http://www.iqnite-conferences.com/de/index.aspx>
>> ----------------------------------------------------------------------------------------------------------------- 
>> Geschäftsführung: Theofanis Vassiliou-Gioles, Stephan Pietsch, Pete 
>> Nicholson Handelsregister HRB 77805 B, Amtsgericht Charlottenburg Ust 
>> ID Nr.: DE 813 143 070 This email may contain confidential and 
>> privileged material for the sole use of the intended recipient. Any 
>> review, use, distribution or disclosure by others is strictly 
>> prohibited. If you are not the intended recipient (or authorized to 
>> receive for the recipient), please contact the sender by reply email 
>> and delete all copies of this message.
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20150429/550e9521/attachment-0001.html>


More information about the compiler-dev mailing list