为了加快 gcc 的编译时间,我们有两种选择:
- 缓存
- gcc 的预编译头文件
但是,我不知道在什么情况下哪个更好。
我用谷歌搜索了这个问题,并得到一些模糊的印象,即 ccache 完全优于另一个。那正确吗?
为了加快 gcc 的编译时间,我们有两种选择:
但是,我不知道在什么情况下哪个更好。
我用谷歌搜索了这个问题,并得到一些模糊的印象,即 ccache 完全优于另一个。那正确吗?
预编译的头文件和 ccache 用于完全不同的用例。ccache 可以与预编译头一起使用,它们不是互斥的。
ccache 缓存给定源文件的全部、头文件和所有内容,缓存已编译的对象模块。从技术上讲,ccache 获取整个预处理的源翻译单元,对其进行哈希处理,并缓存生成的对象模块。
#include
当相同的头文件从不同的源翻译单元重复 d时,预编译的头文件可以节省一点时间。但是如果相同的源代码被重复编译,预编译的头文件就没有帮助(除了使用预编译的头文件的唯一好处)。这就是 ccache 的用武之地,ccache 悄悄地跳过了整个编译阶段,只是从缓存中获取先前编译的对象模块。
因此,比较哪种方法更好,ccache 或预编译头文件并没有真正的意义。他们解决了两个不同的问题。