Skip to content
Latchkey

sccache vs ccache: Caching de Compilador para CI

O ccache é o consagrado cache local de compilador para C/C++; o sccache adiciona armazenamento compartilhado/remoto e suporta mais linguagens, incluindo Rust.

Ambos fazem cache das saídas do compilador para que fontes que não mudaram não sejam recompiladas. O ccache é maduro e focado em caching local de C/C++; o sccache (da Mozilla) pode usar armazenamento remoto (S3, GCS, etc.) e suporta C/C++ mais Rust e outras, o que combina com runners de CI efêmeros.

sccacheccache
LinguagensC/C++, Rust, maisC/C++ (e via wrappers)
Local do cacheLocal ou remoto (S3/GCS/etc.)Disco local
Encaixe em CI efêmeroForte (cache remoto compartilhado)Precisa de persistência do cache
MaturidadeEstabelecidoMuito maduro, amplamente usado
Suporte a RustSimNão nativo

Onde o sccache vence

Em runners de CI efêmeros, os caches locais desaparecem entre os jobs. O sccache pode apontar para um backend remoto compartilhado (S3/GCS), então os cache hits sobrevivem entre runners e execuções. Ele também faz cache da compilação de Rust, o que o ccache não trata nativamente. Para CI de Rust ou builds distribuídos, o sccache é a escolha natural.

Onde o ccache vence

Para C/C++ em máquinas persistentes ou onde você consegue preservar um diretório de cache local, o ccache é extremamente maduro, simples e rápido, com configuração profunda e um longo histórico. Se você não precisa de armazenamento remoto ou de Rust, o ccache é difícil de superar.

Em CI

Com o ccache, persista o diretório de cache via a action de cache da sua CI (com key baseada em toolchain + fontes). Com o sccache, configure um backend remoto para que os hits funcionem entre runners efêmeros. De qualquer forma, o caching de compilador pode reduzir substancialmente o tempo de rebuild.

O veredito

Use o sccache para Rust, times distribuídos ou runners efêmeros que precisam de um cache remoto compartilhado; use o ccache para caching local de C/C++ maduro e simples em máquinas persistentes. Ambos aceleram builds repetidos de forma significativa.

Guias relacionados