Stop using precompiled headers for Linux?

Magnus Ihse Bursie magnus.ihse.bursie at
Thu Nov 1 10:43:09 UTC 2018

On 2018-10-30 21:17, Aleksey Shipilev wrote:
> On 10/30/2018 06:26 PM, Ioi Lam wrote:
>> Is there any advantage of using precompiled headers on Linux?
> I have measured it recently on shenandoah repositories, and fastdebug/release build times have not
> improved with or without PCH. Actually, it gets worse when you touch a single header that is in PCH
> list, and you end up recompiling the entire Hotspot. I would be in favor of disabling it by default.
Not long ago, the hotspot header files were a mess, so you almost always 
ended up in recompiling all of hotspot regardless, when you changed a 
header file. If this situation has improved, then certainly it might 
have shifted the balance between gains and losses for PCH.

But then again, it might just signal that the list of headers included 
in the PCH is no longer optimal. If it used to be the case that ~100 
header files were so interlinked, that changing any of them caused 
recompilation of all files that included it and all the other 100 header 
files on the PCH list, then there was a net gain for using PCH and no 

But nowadays this list might be far too large. Perhaps there's just only 
a core set of say 20 header files that are universally (or almost 
universally) included, and that's all that should be in the PCH list 
then. My guess is that, with a proper selection of header files, PCH 
will still be a benefit.


>> It's on by default and we keep having
>> breakage where someone would forget to add #include. The latest instance is JDK-8213148.
> Yes, we catch most of these breakages in CIs. Which tells me adding it to jdk-submit would cover
> most of the breakage during pre-integration testing.
> -Aleksey

More information about the build-dev mailing list