VS 2010 빌드 속도 올리기

C++만 가지고 쓰는 얘기.

작년에 지급 받은 머신 셋팅을 수정해서 어떻게 빌드 속도를 올렸는지 정리. 아마 한동안 업으로 Win32에서 C++ 할 일은 없을 것 같아서 기억이 사라지기 전에 정리. 저 머신 자체가 내 손을 이미 떠나서 틀린 부분이 있을테니 발견하면 지적 좀 해주시길.

머신 스펙은  대략,

  • CPU: intel i7-2600
  • DRAM: 16 GiB
  • Storage: intel SSD 80 GB + SATA HDD 500 GB

그리고 SSD 용량이 적어서 아래 같은 일을 추가로 했다.

  • 4 GiB의 RAM drive를 할당하고, TEMP, TMP에 해당하는 디렉터리를 RAM 드라이브에 맵핑
  • VisualStudio와 Windows Platform SDK는 SSD에 설치
  • 기타 프로그램(오피스나 LaTeX)은 HDD에 설치
  • 소스 체크아웃은 HDD 쪽에
  • 빌드 스크랫치도 HDD 쪽에
  • IPCH 파일 저장되는 위치 변경. 방법은 민장님 블로그의 “Visual Studio (C/C++) 2010 몇 가지 팁” 참조

대략 이 정도만 설정해도 꽤 빨라지더라. 이전 머신 (Q8600 + 4GiB RAM + HDD only) 에서 빌드할 때 20+분 걸리던게 2+분 수준으로 줄어듦. 예전엔 인크레디빌드 써봐야 빌드 시간이 18분 수준이라 안 쓰느니만 못한 꼴을 몇 번 봤고, 머신 변경 후에는 아예 안 쓰게 되었음. 최대 코어 수도 12개던가로 제한되어 있기도 하고(구입한 라이센스 문제). 그 원인이 된건 다음 것들인듯.

  • IO가 두 디스크에 분산되서 소스 로드 속도가 빨라졌다; 어차피 Windows 헤더와 개발 중이 프로그램 헤더가 모두 로드 되야 하니…
  • VS가 북키핑 용으로 쓰는 듯한 일부 .log, build.unsuccessful ((정확한 파일 이름은 누가 좀..)) 파일들 (내용물이 없거나 매우 짧은) 을 임시 디렉터리에 해당하는 곳에 잔뜩 쓴다. 이게 RAM drive로 옮겨가서 디스크 IO 감소 + 분산
  • CPU 아키텍쳐 변화 (무려 두 세대) + 코어 수 증가(4에서 8로)로 단일 파일 컴파일 속도 증가
  • Win32/x64가 다 있는 경우 개발 중에는 x64 빌드만 사용. 빌드 / 테스트 수행 시간 모두 짧더라

등의 이유로 빨라졌다고 생각한다.

궁금한 것:

  • 모든 소스가 SSD 두 개, 혹은 SSD RAID 위에 올라가 있다면 좋겠지만 그런 설정은 받아본 적이 없으니 궁금증만…
  • 빌드 스크랫치 전체를 RAM 위에 올려놓고 싶긴한데, ECC RAM 아니면 살짝 불안하기도 하고, 그 정도로 메모리를 풍족하게 써본 적도 없고…
  • 여기에 unity build를 섞었다면 어땠을까 하는 것..

해보신 분들의 의견을 구합니다(…).

PS. 근데 가장 좋은건 Google이나 Microsoft 처럼 빌드 팜이 있는 거겠지만, 그 정도의 엔지니어링을 하는 건 아니었으니…