프로그래밍 언어/C/C++

우분투에서 ccache로 컴파일을 빠르게...

소혼 2011. 8. 31. 23:06
반응형



코딩/실행/디버깅의 전환은 매우 빠르게 이뤄져야 합니다.
놀지 말고 일하라! 가 아니라. 흐름을 유지하면서 개발하는게 좋다고 생각하기 때문입니다.

그래서 우연히 ccache란 것을 알게 되어 쓰기로 마음 먹었습니다.

설치는 간단합니다.
apt-get install ccache

사용법도 간단합니다. PATH에 /usr/lib/ccache를 걸어주면 됩니다.
export PATH=/usr/lib/ccache:$PATH

그럼 컴파일 시간을 비교해보겠습니다.
WebKit/Efl 을 다운로드 받아 빌드해서 나온 시간입니다.
각 빌드는 빌드 결과물들을 모두 제거하고 빌드한 것입니다.

1. ccache 없이 풀빌드

real 30m38.772s
user 50m25.953s
sys 5m55.686s

2. ccache 설치후 첫 풀빌드
real 31m42.091s
user 51m54.923s
sys 6m30.928s

3. ccache 설치 후 두번째 풀빌드 
real 6m19.574s
user 5m28.033s

sys 3m57.867s

상상할수 없이 빨라졌습니다.
왜 빨라진걸까요? 컴퓨터 세계에 마법은 존재하지 않습니다.
ccache는 사용자의 디렉토리에 .ccache라는 폴더를 생성하여 object 파일을 해싱하여 저장해두고 있습니다.
만약 다른 디렉토리에 ccache를 저장하고 싶다면, 아래와 같은 환경 변수를 추가로 설정해주시면 됩니다.
export CCACHE_DIR=/development/ryuan/ccache

(일반적으로는 쓸 일이 없지만, 작은 SSD를 사용중이라면 고려해볼 수 있습니다.)


# ls ~/.ccache/

0  1  2  3  4  5  6  7  8  9  CACHEDIR.TAG  a  b  c  d  e  f  stats

preprocessor를 거친 소스코드를 해슁하여 해당 키와 겹치는 object코드가 있으면 컴파일을 하지 않고 해당 object를 그냥 반환하는 방식입니다
2번 과정에서 보시는 것처럼 키가 없는 경우에는 약간의 시간이 더 걸리지만 그렇게 많은 시간은 아닙니다.


반응형

'프로그래밍 언어 > C/C++' 카테고리의 다른 글

[C++] new는 null을 return하는가?  (1) 2012.01.17
static const char* vs static const char []  (0) 2012.01.04
POD vs non POD  (0) 2011.08.07
memwatch  (0) 2011.05.24
GCC옵션: finstrument-functions  (0) 2011.05.24