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