1

为了加快 gcc 的编译时间,我们有两种选择:

  • 缓存
  • gcc 的预编译头文件

但是,我不知道在什么情况下哪个更好。

我用谷歌搜索了这个问题,并得到一些模糊的印象,即 ccache 完全优于另一个。那正确吗?

4

1 回答 1

4

预编译的头文件和 ccache 用于完全不同的用例。ccache 可以与预编译头一起使用,它们不是互斥的。

ccache 缓存给定源文件的全部、头文件和所有内容,缓存已编译的对象模块。从技术上讲,ccache 获取整个预处理的源翻译单元,对其进行哈希处理,并缓存生成的对象模块。

#include当相同的头文件从不同的源翻译单元重复 d时,预编译的头文件可以节省一点时间。但是如果相同的源代码被重复编译,预编译的头文件就没有帮助(除了使用预编译的头文件的唯一好处)。这就是 ccache 的用武之地,ccache 悄悄地跳过了整个编译阶段,只是从缓存中获取先前编译的对象模块。

因此,比较哪种方法更好,ccache 或预编译头文件并没有真正的意义。他们解决了两个不同的问题。

于 2016-10-26T01:45:02.333 回答