On Tue, 12 Aug 2025 11:32:42 GMT, Francesco Andreuzzi <[email protected]> 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: > > - conditional includes > - variants ### Amazon Linux 2 x86_64 + Docker `debian:bookworm-slim` | Git Ref | Compiler | Build flavor | Average (user+sys) | StdDev | |----------|--------|--------|----------|---------| | master | gcc | server | 2962.90 | 3.04 | | master | gcc | fd | 4165.31 | 4.36 | | master | gcc | custom | 677.99 | 0.45 | | master | clang | server | 2247.31 | 4.27 | | master | clang | fd | 3054.74 | 0.23 | | master | clang | custom | 496.13 | 1.30 | | 9e0cb7e8 | gcc | server | 2552.51 | 1.44 | | 9e0cb7e8 | gcc | fd | 3650.50 | 1.68 | | 9e0cb7e8 | gcc | custom | 630.25 | 1.80 | | 9e0cb7e8 | clang | server | 1826.63 | 4.21 | | 9e0cb7e8 | clang | fd | 2514.22 | 1.16 | | 9e0cb7e8 | clang | custom | 453.29 | 0.52 | | 892ecb5a | gcc | server | 2570.87 | 0.96 | | 892ecb5a | gcc | fd | 3644.73 | 7.16 | | 892ecb5a | gcc | custom | 626.08 | 2.83 | | 892ecb5a | clang | server | 1824.21 | 2.31 | | 892ecb5a | clang | fd | 2518.37 | 1.75 | | 892ecb5a | clang | custom | 453.56 | 0.74 | ### Amazon Linux 2 aarch64 + Docker `debian:bookworm-slim` | Git Ref | Compiler | Build flavor | Average (user+sys) | StdDev | |---------|--------|--------|----------|---------| | master | gcc | server | 2248.63 | 4.49 | | master | gcc | fd | 3238.64 | 4.29 | | master | gcc | custom | 523.34 | 6.50 | | master | clang | server | 1877.40 | 3.01 | | master | clang | fd | 2516.10 | 2.95 | | master | clang | custom | 437.22 | 1.22 | | 9e0cb7e8| gcc | server | 1811.81 | 5.17 | | 9e0cb7e8| gcc | fd | 2693.76 | 7.68 | | 9e0cb7e8| gcc | custom | 440.88 | 1.81 | | 9e0cb7e8| clang | server | 1406.12 | 6.20 | | 9e0cb7e8| clang | fd | 1872.41 | 13.27 | | 9e0cb7e8| clang | custom | 354.82 | 0.65 | | 892ecb5a| gcc | server | 1774.99 | 13.02 | | 892ecb5a| gcc | fd | 2623.76 | 1.51 | | 892ecb5a| gcc | custom | 428.87 | 1.05 | | 892ecb5a| clang | server | 1363.65 | 0.61 | | 892ecb5a| clang | fd | 1842.38 | 6.90 | | 892ecb5a| clang | custom | 344.98 | 1.21 | ### Fedora 42 x86_64 | Git Ref | Compiler | Build flavor | Average (user+sys) | StdDev | |----------|--------|--------|----------|---------| | master | gcc | server | 2713.01 | 3.68 | | master | gcc | fd | 3849.04 | 18.43 | | master | gcc | custom | 650.11 | 0.51 | | master | clang | server | 2227.25 | 0.95 | | master | clang | fd | 2998.13 | 0.37 | | master | clang | custom | 499.48 | 0.15 | | 9e0cb7e8 | gcc | server | 2398.33 | 1.41 | | 9e0cb7e8 | gcc | fd | 3449.44 | 1.61 | | 9e0cb7e8 | gcc | custom | 609.89 | 0.70 | | 9e0cb7e8 | clang | server | 1781.34 | 1.05 | | 9e0cb7e8 | clang | fd | 2431.96 | 0.37 | | 9e0cb7e8 | clang | custom | 451.13 | 0.22 | | 892ecb5a | gcc | server | 2407.65 | 2.21 | | 892ecb5a | gcc | fd | 3457.53 | 0.34 | | 892ecb5a | gcc | custom | 611.44 | 0.51 | | 892ecb5a | clang | server | 1784.70 | 0.69 | | 892ecb5a | clang | fd | 2437.44 | 0.82 | | 892ecb5a | clang | custom | 452.42 | 0.20 | ### Git Ref - 9e0cb7e8: First approach in this PR, counting header inclusions - 892ecb5a: `-ftime-trace` + ClangBuildAnalyzer (last commit) ### Compiler - Clang 20 - GCC 12 ### Build flavor - `fd`: `--enable-debug` - `custom`: `--with-jvm-variants=custom --enable-jvm-feature-epsilongc` Each of the measurements above was taken three times. I got some measurements using a cutoff of **100.000ms** in ClangBuildAnalyzer, so all headers taking more than that are included in `precompiled.hpp`. Overall, 892ecb5a95695d75cef80dfdf053e50a092b0784 (last commit) seems to perform better than both `master` and the initial approach I tried in this PR. It would be nice if other compilers would provide similar metrics as `-ftime-trace`, but I couldn't find anything useful. So far GCC seems to like the new precompiled set. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3219345092 PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3219373245
