On Fri, 8 Aug 2025 22:11:32 GMT, Francesco Andreuzzi <d...@openjdk.org> wrote:
>> In this PR I propose to refresh the included headers in hotspot >> `precompiled.hpp`. The current set of precompiled headers was refreshed in >> 2018, 7 years ago. I repeated the same operations and measurements after >> refreshing the set of precompiled headers according to the current usage >> frequency. >> >> These are the results I observed. Depending on the platform, the improvement >> is between 10 and 20% in terms of total work (user+sys). The results are in >> seconds. >> >> >> linux-x64 GCC >> master real 81.39 user 3352.15 sys 287.49 >> JDK-8365053 real 81.94 user 3030.24 sys 295.82 >> >> linux-x64 Clang >> master real 43.44 user 2082.93 sys 130.70 >> JDK-8365053 real 38.44 user 1723.80 sys 117.68 >> >> linux-aarch64 GCC >> master real 1188.08 user 2015.22 sys 175.53 >> JDK-8365053 real 1019.85 user 1667.45 sys 171.86 >> >> linux-aarch64 clang >> master real 981.77 user 1645.05 sys 118.60 >> JDK-8365053 real 791.96 user 1262.92 sys 101.50 > > Francesco Andreuzzi has updated the pull request incrementally with two > additional commits since the last revision: > > - magic number: 400 > - inline 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` ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3175208900