JDK-8342279 : Performance Plan for JEP483: Ahead-of-Time Class Loading & Linking
  • Type: JEP Task
  • Component: performance
  • Priority: P4
  • Status: New
  • Resolution: Unresolved
  • Submitted: 2024-10-15
  • Updated: 2024-10-21
Related Reports
Blocks :  
Description
This subtask is to specify what performance tests and results are for the implementation of JEP483: Ahead-of-Time Class Loading & Linking ([JDK-8315737](https://bugs.openjdk.org/browse/JDK-8315737) ). 

(A) Confirmation of expected performance gain

As described in the JEP document, we expect modest start-up improvements for applications that use a significant amount of invokedynamic operations. We can validate this claim using two simple startup benchmarks:

[1] StreamTest - a small Java program that uses a few stream operations

Expected performance improvement ~15-30%

[2] javac HelloWorld.java - run the Java compiler on a small source file

Expected performance improvement ~10-20%

(See attachment [perf-results-jep483-20241015.txt](https://bugs.openjdk.org/secure/attachment/111561/perf-results-jep483-20241015.txt) for details, as well as sample numbers collected by [~iklam])

```
HelloStream BEFORE 0.0259389
HelloStream AFTER  0.0185902 
javac HelloWorld.java BEFORE 0.182298
javac HelloWorld.java AFTER  0.149146
``` 

(B) No performance degradation in baseline cases

Validate that there is no performance degradation on CDS-enabled startup tests and benchmarks such as Renaissance, Dacapo, and SPECjbb2015 when class linking is not enabled (OOTB/`-XX:-AOTClassLinking`)

(C) No/minimal performance degradation when enabled

Validate that there are no or minimal performance degradation on CDS-enabled benchmarks such as Renaissance, Dacapo, and SPECjbb2015 when class linking is enabled (OOTB/`-XX:+AOTClassLinking`)