ccache的缺点

时间:2011-12-18 18:45:46

标签: performance gcc compilation ccache

我正在使用ccache进行实验,但我不确定是否应该使用它。任何人都可以解释ccache导致错误行为的情况。或者我们应该总是使用ccache?任何获得该ccache的人都在考虑生成错误的目标文件或头文件中的更改吗?

3 个答案:

答案 0 :(得分:9)

使用ccache时几乎没有任何问题。有时(例如每月一次甚至更少),我用ccache -C完全清理其缓存。

我的复杂 Makefile -s比ccache更多。

简而言之,不要打扰,当你怀疑某事时,只需运行ccache -C

当您对编译时间进行基准测试时,显然应该避免使用ccache。 (在这种情况下,您可以将-time-ftime-report传递给gccg++

附加物

我的意见,ccache至少应该是可配置的,以禁止使用GCC插件进行编译的缓存,因为GCC插件可以做任何不可缓存的事情(例如查询数据库或web服务)。请参阅this message

答案 1 :(得分:4)

您通过提出错误的行为来表达您的问题。

如果使用不当,ccache可能遇到的错误行为会降低您的编译速度。 ccache必须扫描文件以识别过去的编译,因此通过ccache的实际编译比没有它的情况要慢。只有缓存命中更快。

当您经常重新编译相同的代码而不修改它时,ccache非常有用。它不会加速编译新代码或修改代码。

答案 2 :(得分:3)

我曾经遇到过通过ccache进行SCons编译的问题(符号链接方法)。

环境设置

事实证明ccache 需要在环境中设置$ HOME变量,而SCons默认不设置它(SCons有策略尽可能地将构建与环境隔离开来)默认情况下)。

我不完全确定这是否会被视为ccache的问题或仅与SCons互操作。除了这个怪癖之外,我从来没有遇到任何关于ccache的麻烦。

SSD磨损

我已经习惯将〜/ .ccache链接到tmpfs以避免不必要地佩戴我的SSD。显然,这不是ccache的问题,因为没有它,情况会更糟。 (要记住的事情