RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v10]

Francesco Andreuzzi duke at openjdk.org
Mon Aug 11 16:27:15 UTC 2025


On Mon, 11 Aug 2025 15:49:55 GMT, Magnus Ihse Bursie <ihse at openjdk.org> wrote:

>> Some results:
>> 
>> | Features                         | Time1 (s) | Time2 (s) | Change (s) |
>> |---------------------------------|----------|----------|-------------|
>> | epsilongc                       | 490.77   | 489.50   | 1.27        |
>> | epsilongc cds                   | 546.27   | 537.91   | 8.36        |
>> | epsilongc compiler1             | 547.87   | 539.86   | 8.01        |
>> | epsilongc compiler2             | 785.18   | 735.13   | 50.05       |
>> | g1gc                            | 682.44   | 666.40   | 16.04       |
>> | epsilongc services              | 510.22   | 504.68   | 5.54        |
>> | epsilongc services jfr          | 675.49   | 636.87   | 38.62       |
>> | epsilongc jni-check              | 499.53   | 493.72   | 5.81        |
>> | epsilongc compiler1 jvmci       | 589.74   | 591.32   | -1.58       |
>> | epsilongc compiler2 jvmci       | 852.46   | 806.35   | 46.11       |
>> | epsilongc services jvmti        | 567.67   | 561.73   | 5.94        |
>> | epsilongc link-time-opt         | 535.96   | 526.00   | 9.97        |
>> | epsilongc management            | 508.63   | 504.53   | 4.10        |
>> | epsilongc opt-size              | 507.03   | 498.58   | 8.45        |
>> | parallelgc                      | 525.78   | 517.38   | 8.40        |
>> | serialgc                        | 512.59   | 511.88   | 0.71        |
>> | shenandoahgc                    | 739.44   | 722.72   | 16.72       |
>> | zgc                             | 681.20   | 672.28   | 8.92        |
>> 
>> - `Time1` is the time (sys+user) it takes to complete `make -h hotspot` with the precompiled headers in be25d3413b432b56e9789eae55920f1862008911 (>=400 includes in a `custom` build)
>> - `Time2`: same as `Time1`, with the precompiled headers having >=400 includes in a `custom` build with all features in the first column
>> 
>> So, the third column measures how much we improve by taking new precompiled headers due to a specific features. I'd say the following are worth keeping behind an include guard:
>> - `cds`
>> - `compiler1`
>> - `compiler2`
>> - `g1gc`
>> - `services`
>> - `jfr` ==> `services` (#26723)
>> - `jni-check`
>> - `link-time-opt`
>> - `opt-size`
>> - `parallelgc`
>> - `shenandoahgc`
>> - `zgc`
>
>> * `link-time-opt`
>> 
>> * `opt-size`
> 
> I thought these should not really affect the set of files compiled (or included, which is what matters here)?

That's right @magicus, I rerun the script and I got only a `1.86s` improvements for `link-time-opt`. I checked the includes in `precompiled.hpp` and indeed nothing changes when the analyzer runs on a build with `link-time-opt`. So, exactly the same build, just different build times. That's most likely noise.

I'd say, as a criteria we could use is:
- Improvement > 10s (unlikely to be noise, but still possible)
- new headers added to `precompiled.hpp` is not empty

-------------

PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3175758710


More information about the hotspot-dev mailing list