【问题标题】:Does ccache totally excel the means of gcc's precompiled headers?ccache 是否完全优于 gcc 的预编译头文件?
【发布时间】:2017-03-08 05:29:30
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c++ gcc compilation precompile ccache


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-09-08
      • 2010-09-08
      • 2012-06-13
      • 1970-01-01
      • 2017-03-29
      • 2021-08-09
      • 1970-01-01
      • 1970-01-01
      • 2010-11-20
      相关资源
      最近更新 更多