> 1 nov. 2018 kl. 17:49 skrev Erik Joelsson <erik.joels...@oracle.com>:
> 
>> On 2018-11-01 08:17, Magnus Ihse Bursie wrote:
>>> On 2018-11-01 15:53, Ioi Lam wrote:
>>> Just a stupid question. Does GCC have actual support for PCH? I know 
>>> windows can load pre-compiled information from a special binary file. Does 
>>> GCC support that kind of functionality?
>> Yes.
>> 
>> https://gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html
> But the Visual Studio compiler seems to be able to gain much more build 
> performance from it. I don't have fresh numbers but I definitely remember a 
> non PCH build on Windows taking more than double the time, if not triple or 
> quadruple.

Could that be due to a lower starting point? I mean, if the windows compilation 
takes more time in the base case, it's easier to improve times with PCH. 

/Magnus

> 
> /Erik
>> /Magnus
>> 
>>> 
>>> Thanks
>>> Ioi
>>> 
>>>> On Nov 1, 2018, at 5:09 AM, Magnus Ihse Bursie 
>>>> <magnus.ihse.bur...@oracle.com> wrote:
>>>> 
>>>> 
>>>> 
>>>>> On 2018-11-01 12:51, Thomas Stüfe wrote:
>>>>> On Thu, Nov 1, 2018 at 12:05 PM Magnus Ihse Bursie
>>>>> <magnus.ihse.bur...@oracle.com> wrote:
>>>>>> On 2018-11-01 11:54, Aleksey Shipilev wrote:
>>>>>>>> On 11/01/2018 11:43 AM, Magnus Ihse Bursie wrote:
>>>>>>>> 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 "punishment".
>>>>>>>> 
>>>>>>>> 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.
>>>>>>> I agree. This smells like inefficient PCH list. We can improve that, 
>>>>>>> but I think that would be a
>>>>>>> lower priority, given the abundance of CPU power we use to compile 
>>>>>>> Hotspot. In my mind, the decisive
>>>>>>> factor for disabling PCH is to keep proper includes at all times, 
>>>>>>> without masking it with PCH. Half
>>>>>>> of the trivial bugs I submit against hotspot are #include differences 
>>>>>>> that show up in CI that builds
>>>>>>> without PCH.
>>>>>>> 
>>>>>>> So this is my ideal world:
>>>>>>>    a) Efficient PCH list enabled by default for development pleasure;
>>>>>>>    b) CIs build without PCH all the time (jdk-submit tier1 included!);
>>>>>>> 
>>>>>>> Since we don't yet have (a), and (b) seems to be tedious, regardless 
>>>>>>> how many times both Red Hat and
>>>>>>> SAP people ask for it, disabling PCH by default feels like a good 
>>>>>>> fallback.
>>>>>> Should just CI builds default to non-PCH, or all builds (that is, should
>>>>>> "configure" default to non-PCH on linux)? Maybe the former is better --
>>>>>> one thing that the test numbers here has not shown is if incremental
>>>>>> recompiles are improved by PCH. My gut feeling is that they really
>>>>>> should -- once you've created your PCH, subsequent recompiles will be
>>>>>> faster.
>>>>> That would only be true as long as you just change cpp files, no? As
>>>>> soon as you touch a header which is included in precompiled.hpp you
>>>>> are worse off than without pch.
>>>>> 
>>>>>> So the developer default should perhaps be to keep PCH, and we
>>>>>> should only configure the CI builds to do without PCH.
>>>>> CI without pch would be better than nothing. But seeing how clunky and
>>>>> slow jdk-submit is (and how often there are problems), I rather fail
>>>>> early in my own build than waiting for jdk-submit to tell me something
>>>>> went wrong (well, that is why I usually build nonpch, like Ioi does).
>>>>> 
>>>>> Just my 5 cent.
>>>> I hear you, loud and clear. :) I've created 
>>>> https://bugs.openjdk.java.net/browse/JDK-8213241 to disable PCH by 
>>>> default, for all builds, on gcc. (I'm interpreting "linux" in this case as 
>>>> "gcc", since this is compiler-dependent, and not OS dependent).
>>>> 
>>>> /Magnus
>>>> 
>>>>> ..Thomas
>>>>>> /Magnus
>>>>>> 
>>>>>> 
>>>>>>> -Aleksey
> 

Reply via email to