编译器缓存用来缓存编译的结果,当源码不变的时候,通过复用目标文件来达到加速的目的。常用的编译器缓存有 ccache 和 sccache。
一般而言,编译器缓存实现比较简单,使用也比较方便,通用性很强。编译器缓存可以使用在 Release 编译中。
增量编译相对复杂很多。编译器将编译源码视为不同的计算单元,然后将这些计算单元的结果缓存下来,下次进行编译的时候会尝试直接从缓存中获取结果,从而达到加速的目的。然而,增量编译的实现并不通用,而且在一些 corner case 中可能会有一些微妙的错误。因此增量编译无法用在 Relase 构建中。