sccache 는?
- ccache는 빌드 중에 생성 된 object 파일을 caching 하고, 다시 빌드 할 때 재사용 될 수 있도록 해주는 프로그램이다.
- 그럼 sccache 는? ccache 처럼 빌드 중에 만들어진 object 파일들을 네트워크 또는 메모리상에 올려 놓고, 공유해서 다른 개발자가 빌드 할 때 사용할 수 있도록 해주는 프로그램이다.
좋은 점
- 네트워크를 통한 object 파일 공유로 인해 ccache 와는 다르게 내 로컬 PC에서 처음 빌드 시에도 컴파일 속도가 빠르다.
사용법
- 여러 공유 방법이 있는데, 여기서는 redis를 사용하는 방법만 설명하겠다.
- redis 설치
$ sudo apt-get install redis $ sudo service redis-server start $ redis-cli 127.0.0.1:6379> ping PONG 127.0.0.1:6379> exit
- https://github.com/mozilla/sccache 여기서 sccache 다운로드
$ wget https://github.com/mozilla/sccache/releases/download/v0.2.15/sccache-v0.2.15-x86_64-unknown-linux-musl.tar.gz $ tar xvf ./sccache-v0.2.15-x86_64-unknown-linux-musl.tar.gz $ sudo cp ./sccache-v0.2.15-x86_64-unknown-linux-musl/sccache /usr/local/bin/ $ sudo chmod +x /usr/local/bin/sccache
- redis 서버 설정
- export SCCACHE_REDIS=redis://127.0.0.1:6379/1 추가
테스트 해 보기
- 테스트 C 코드
#include <stdio.h> int main() { printf("hello world !!! \n"); return 0; }
- 빌드
- 우선 로컬에서 서버로 돌고 있는 sscache를 중지한다.
- redis 서버 설정을 하고, 컴파일을 해본다.
- 두번째 컴파일 때 시간이 단축 된 것을 볼 수 있다.
- 그리고 redis 서버에 object 캐쉬가 저장 된 것을 볼 수 있다.
-
$ sccache --stop-server $ export SCCACHE_REDIS=redis://127.0.0.1:6379/1 $ time sccache gcc -o test.o -c test.c real 0m0.205s user 0m0.000s sys 0m0.016s $ time sccache gcc -o test.o -c test.c real 0m0.059s user 0m0.000s sys 0m0.000s $ redis-cli -n 1 127.0.0.1:6379[1]> KEYS * 1) "49a159162a193574628f9bb9c993cd60ca6ad7aa7bec0dfbaf348443bc4a7e26" 127.0.0.1:6379[1]> exit
결론
- sccache를 사용하면 빌드 속도가 많이 개선 된다.