> 3 nov. 2018 kl. 23:24 skrev David Holmes <david.hol...@oracle.com>: > >> On 3/11/2018 10:09 PM, David Holmes wrote: >> Looks okay - thanks for doing all the experiments! (Though I'm still curious >> what happens if you recompile individual header files :) ). > > s/recompile/precompile/ :)
What do you mean? To have more than one set of PCH? As far as I know, all compilers we use only support a single PCH per source file to compile. So while you could have a PCH tailored per source file, that would only make sense in a scenario were you recompile all source files (but no header files) often. /Magnus > > David > >> 25 // Precompiled headers are turned off for Sun Studio, >> May as well change to Solaris Studio if you're going to fix the typo :) >> Thanks. >> David >>> On 3/11/2018 7:06 PM, Magnus Ihse Bursie wrote: >>> The reasons for the current set of files included in precompiled.hpp is >>> somewhat lost in the mists of history. However, it is clear that it is not >>> optimal. >>> >>> This patch replaces the current set with a new set, based on how often a >>> header file is included in a C++ file. This selection contains all header >>> files that are included by at least 130 C++ files. Testing has shown that >>> this is around the optimal value -- include many more, and too many >>> "innocent" files get hurt by unneeded work, leave out many more, and we >>> miss out on optimization possibilities. >>> >>> The same set turned out to work well for both clang and gcc. However, files >>> named "*.inline.hpp" did hurt rather than help performance, so those have >>> been left out. For visual studio, the same set was also optimal, as long as >>> the inline files were included. Presumably, visual studio is better than >>> gcc/clang on handling precompiled headers containing inlined code. >>> >>> Here are some rough comparisons from our internal CI system, for building >>> the target "hotspot" from scratch. >>> >>> macosx-x64: >>> old: 00:05:00 >>> new: 00:03:47 >>> >>> linux-x64: >>> old: 00:05:43 >>> new: 00:04:51 >>> >>> windows-x64: >>> old: 00:05:18 >>> new: 00:04:33 >>> >>> linux-aarch64: >>> old: 00:07:57 >>> new: 00:03:48 >>> >>> Bug: https://bugs.openjdk.java.net/browse/JDK-8213339 >>> WebRev: >>> http://cr.openjdk.java.net/~ihse/JDK-8213339-update-precompiled-headers/webrev.01 >>> >>> >>> /Magnus