ccache的缺点
Posted
技术标签:
【中文标题】ccache的缺点【英文标题】:disadvantages of ccache 【发布时间】:2011-12-18 18:45:46 【问题描述】:我正在使用 ccache 进行实验,但我不太确定是否应该使用它。任何人都可以解释 ccache 可能导致错误行为的情况。还是我们应该总是使用 ccache ?任何获得 ccache 的人都在生成错误的目标文件或头文件的更改不被考虑?
【问题讨论】:
ccache.samba.org 说不应该有任何错误行为,如果有人知道,他应该报告它而不是在 *** 上回答问题。 绝对。谢谢,我应该使用更新的 ccache 并继续寻找未处理的现有报告错误,以了解可能存在的错误。 【参考方案1】:在使用ccache
时,我几乎没有遇到任何问题。有时(例如每月一次甚至更少),我会使用 ccache -C
完全清理其缓存。
我对复杂的 Makefile-s 的问题比使用 ccache
的问题更多。
简而言之,不要打扰,当您怀疑某些事情时,只需运行ccache -C
。
当您对编译时间进行基准测试时,您显然应该避免使用ccache
。 (在这种情况下,您可以将-time
或-ftime-report
传递给gcc
或g++
)。
附录
我认为,ccache
至少应该可以配置为禁用缓存以使用 GCC 插件进行编译,因为 GCC 插件可以做任何不可缓存的事情(例如查询数据库或 Web 服务)。见this message。
【讨论】:
感谢您的建议... :-)。顺便说一句,有时您遇到问题的情况是什么?因为当我们遇到问题时,很难知道它会因为 ccache 而出现。而且当你遇到问题时,“ccache -c”是绝对的解决方案,那么ccache肯定有问题。 不,我强烈怀疑 Makefile-s 中存在假设问题。在 MELT gcc-melt.org 中,我的 Makefile-s 有问题(对于部分重建,GCC Makefile-s 可能也不完整)。同样,我从不怀疑 ccache 做错了。ccache
通常被触发为 gcc
如果一个坏的 Makefile
忘记运行编译命令,不管有没有 ccache
你都会遇到麻烦。【参考方案2】:
您提出了错误的行为,从而很好地表达了您的问题。
如果使用不当,ccache 可能会导致编译速度变慢。 ccache 必须扫描文件以识别过去的编译,因此通过 ccache 进行实际编译比没有它时要慢。只有缓存命中更快。
当您经常重新编译相同的代码而不修改它时,ccache 很有用。它不会加快新代码或修改代码的编译速度。
【讨论】:
【参考方案3】:我曾经遇到过通过 ccache(符号链接方法)编译 SCons 的问题。
环境设置
原来 ccache 需要在环境中设置 $HOME 变量,而 SCons 默认情况下没有设置它(SCons 有尽可能将构建与环境隔离的策略默认)。
我不完全确定这是否会算作 ccache 的问题,或者仅仅是与 SCons 的互操作。除了这个怪癖之外,我在使用 ccache 时从来没有遇到过任何问题。
SSD 磨损
我养成了将 ~/.ccache 链接到 tmpfs 的习惯,以避免不必要地磨损我的 SSD。显然,这不是 ccache 的问题,因为没有它,情况会更糟。 (需要记住的一点)
【讨论】:
以上是关于ccache的缺点的主要内容,如果未能解决你的问题,请参考以下文章