JDK-8060693 : 8049555 and 8050200 are regressing the startup time
  • Type: Bug
  • Component: core-libs
  • Sub-Component: java.lang.invoke
  • Affected Version: 8u40,9
  • Priority: P4
  • Status: Resolved
  • Resolution: Duplicate
  • Submitted: 2014-10-15
  • Updated: 2014-10-15
  • Resolved: 2014-10-15
Related Reports
Relates :  
Relates :  
Relates :  
Description
Recent changes (JDK-8049555 and JDK-8050200) are responsible for massive regression in startup time.

A simple HelloWorld application runs:

for S in `seq 1 100`; do time ~/trunks/jdk9-dev/build/linux-x86_64-normal-server-release/images/j2sdk-image/bin/java Hello; done 2>&1 | grep real | sed -e "s/0m//g" -e "s/s//g" | awk '{ sum += $2; n++ } END { if (n > 0) print sum / n; }'

...yield:

 33.3 ms -- jdk9-b30
 33.3 ms -- before JDK-8049555
 48.4 ms -- after JDK-8049555
 48.5 ms -- before JDK-8050200
 52.9 ms -- after JDK-8050200
 52.9 ms -- jdk9-b31

Both regressions seems to be caused by a heavy lifting in static initializers.
Comments
Resolved with JDK-8058892.
15-10-2014

YES! I cherry-picked http://hg.openjdk.java.net/jdk9/hs-comp/jdk/raw-rev/e6dd2eb82d89, and the startup time is back at 33.3 ms.
15-10-2014

[~shade] Does JDK-8058892 solve the problem?
15-10-2014