c++ - ccache 是否完全优于 gcc 的预编译头文件?

标签 c++ gcc compilation precompile ccache

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

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

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

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

最佳答案

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

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

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

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

关于c++ - ccache 是否完全优于 gcc 的预编译头文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40252267/

相关文章:

c - 从汇编器到 C 编译器

c - 如何将标准输入中的字符读入c中的数组?

python - 从源安装python得到了相同的系统python

c++ - C++专业程序员如何实现通用抽象?

c++ - WTL Error : RegisterClassObjects(DWORD, DWORD) throw()' 已经有一个正文

c - gcc 和 glibc 版本

android - 如何为 Lua 的 VM/编译器重新编译已编译的字节码列表?

c++ - 在 sfml 中加载纹理

c++ - C++中 "true"封装怎么做?

javascript - CDN 托管的 javascript 库与下载和缩小