fnwinter.github.io blog

sccache

sccache 는?

  • ccache는 빌드 중에 생성 된 object 파일을 caching 하고, 다시 빌드 할 때 재사용 될 수 있도록 해주는 프로그램이다.
  • 그럼 sccache 는? ccache 처럼 빌드 중에 만들어진 object 파일들을 네트워크 또는 메모리상에 올려 놓고, 공유해서 다른 개발자가 빌드 할 때 사용할 수 있도록 해주는 프로그램이다.

좋은 점

  • 네트워크를 통한 object 파일 공유로 인해 ccache 와는 다르게 내 로컬 PC에서 처음 빌드 시에도 컴파일 속도가 빠르다. :thumbsup:

사용법

  • 여러 공유 방법이 있는데, 여기서는 redis를 사용하는 방법만 설명하겠다.
  • redis 설치 :computer:
     $ 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 서버 설정
    • :star: 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 캐쉬가 저장 된 것을 볼 수 있다.
  • :computer:
     $ 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를 사용하면 빌드 속도가 많이 개선 된다. :rocket:
comments powered by Disqus