C++ ccache是否完全优于gcc';s预编译头?

C++ ccache是否完全优于gcc';s预编译头?,c++,gcc,compilation,precompile,ccache,C++,Gcc,Compilation,Precompile,Ccache,为了加快gcc的编译时间,我们有两种选择: 卡切 gcc的预编译头 然而,我不知道在什么情况下哪个更好 我在谷歌上搜索了这个问题,并得到了一些模糊的印象,认为ccache完全优于其他人。是吗?预编译头和ccache用于完全不同的用例。ccache可以与预编译头一起使用,它们不是互斥的 ccache缓存给定源文件的全部、头文件和所有文件,缓存已编译的对象模块。从技术上讲,ccache获取整个预处理的源代码翻译单元,对其进行哈希运算,并缓存生成的对象模块 当相同的头文件从不同的源翻译单元重复地包

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

  • 卡切
  • gcc的预编译头
然而,我不知道在什么情况下哪个更好


我在谷歌上搜索了这个问题,并得到了一些模糊的印象,认为ccache完全优于其他人。是吗?

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

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

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


所以,比较哪种方法更好,ccache还是预编译头并没有真正的意义。它们解决了两个不同的问题。

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

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

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

所以,比较哪种方法更好,ccache还是预编译头并没有真正的意义。它们解决两个不同的问题