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