为什么在GCC上使用预编译的标头较慢

时间:2019-02-16 21:06:30

标签: gcc build clang precompiled-headers

我尝试将预编译的标头与GCC配合使用,以加快构建速度。这个项目有大约80个文件,其中大多数都包含一个我预先编译的标头。该头包括大量其他头。至少在纸面上,这似乎是使用PCH的好用例。

使用clang时,我得到了预期的加速,大约快了2倍。但是,在gcc上,编译需要的时间更长

我将我的PCH存储在一个单独的目录中,并尝试使用-I添加目录,以及尝试直接使用-include指定PCH(这没有用:gcc最终包括PCH和普通标头)。 PCH的编译选项与源文件相同。

不进行PCH编译大约需要13秒。使用PCH大约需要18秒。我用-H-Winvalid-pch验证了gcc(仅)包括预编译的标头。 -H的单个文件的完整输出如下所示:

! .bake_cache/x64-Linux-debug/include/corto.h.gch
 ./src/lang/boolean.c

!应该表明gcc已成功加载pch:

  

-H除其他常规活动外,打印使用的每个头文件的名称。每个名称都缩进以显示   是“ #include”堆栈。预编译的头文件也会被打印出来,   即使发现它们无效;无效的预编译头   文件以“ ... x”打印,有效文件以“ ...!”打印。

发件人:https://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html

我很茫然。 gcc似乎能够找到并使用PCH,但仍然需要更长的时间。你知道是什么原因造成的吗?

0 个答案:

没有答案