ccache 是否完全优于 gcc 预编译标头的手段?



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

  • ccache
  • gcc的预编译头文件

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

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

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

ccache缓存给定源文件的整个文件,包括头文件和所有文件,缓存编译后的对象模块。从技术上讲,ccache获取整个预处理的源翻译单元,对其进行散列,并缓存结果对象模块。

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

所以,比较哪一种方法更好是没有意义的,缓存还是预编译头文件。它们解决了两个不同的问题。

相关内容

  • 没有找到相关文章

最新更新