为了加快gcc的编译时间,我们有两个选择:
- 高速缓存
- gcc 的预编译头文件
但是,我不知道在什么情况下哪个更好。
我用谷歌搜索了这个问题,得到一些模糊的印象,即 ccache 完全优于另一个。是吗?
最佳答案
预编译 header 和 ccache 用于完全不同的用例。 ccache 可以和预编译头一起使用,它们并不互斥。
ccache 缓存整个给定的源文件、头文件和所有内容,缓存已编译的目标模块。从技术上讲,ccache 获取整个预处理的源翻译单元,对其进行哈希处理,然后缓存生成的对象模块。
当相同的头文件从不同的源翻译单元重复 #include
d 时,预编译头文件可以节省一点时间。但是,如果重复编译相同的源代码,预编译头文件就无济于事(除了使用预编译头文件的唯一好处)。这就是 ccache 的用武之地,ccache 悄悄地跳过了整个编译阶段,只是从缓存中获取先前编译的对象模块。
所以,比较哪种方法更好,ccache 还是预编译头,并没有太大的意义。它们解决了两个不同的问题。
关于c++ - ccache 是否完全优于 gcc 的预编译头文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40252267/