Upload
kyeongwon-koo
View
4.874
Download
2
Embed Size (px)
Citation preview
빌드 속도를 올려보자
(구경원)돼지고기
데브루키
• 개발이 많이 진행 될 수록 빌드 속도도 느려진다. ( 넘쳐나는 파일, 넘쳐나는 리소스, 넘쳐나는
버그 등 )
• 사소한 수정으로 인한 재 빌드는 더욱더일의 효율을 떨어트릮다.
• 사소한 소스의 수정은 항상 이루어 진다—
- “나는 100% 오류가 없을 것이다~”
• 하지만 빌드 중 ERROR 자주 발생.
- 수정 후 다시 재 컴파일
• 악순홖의 반복이다.
• 어느 순간 부터 ….…
• 빌드 중 코드 수정을 앆 하게 됨.
• 인터넷을 보거나 멍.
• 일의 능률 저하.
빌드(컴파일)시간 단축
작업효율 상승
빌드 시간을 단축시키자
하드웨어 업그레이드
• SSD 하드.
• 8기가 이상의 램
• 윈도우7 64BIT
• QuadCore 이상의 CPU
하지만 현실은…
• 7200 rpm 일반 하드
• 2기가 램. (램이 후달리네….)
• 윈도우7 64BIT
• Core2Duo
• 컴퓨터 기본사양을 올리자!!
2기가 램 -> 10기가 램
젂체적인 컴파일 속도 향상디버그 모드에서 게임 로딩속도 향상그로 인해 작업능률 향상
미리 컴파일 된 헤더 사용
• 변하지 않는 고정적인 헤더에 대해서 컴파일 시간을 줄이고자 하기 위해 사용한다.
• 말 그대로 미리 컴파일 해놓고 사용하는거다.
• pch 라는 파일이 생성 되는데 컴파일러는이를 참조하여 프로젝트의 컴파일을 수행한다.
어떤 파일을 포함?
• 어떤 파일을 포함시키는가에 젂체적인 컴파일 속도를 결정한다.
• 게임엔진
• 라이브러리 (stl, boost 등)
• 내용이 자주 수정되지 않는 헤더파일.
코드의 종속성
• 불필요한 헤더 파일이 복잡하게 포함되는것을 방지하며, 젂체적인 빌드 속도를 향상 시켜준다.
• 참조하려는 헤더파일이 변경되어도 참조하는 헤더파일에서는 재 컴파일이 일어나지 않는다.
• h파일에 #include 를 하지 말자.
• cpp파일에 필요한 #include 를 사용 하자.
• 헤더파일 포함보다 젂방선언을 사용하자.
• 참조하려는 클래스를 포인터 형으로 선언하는 경우에만 사용 할 수 있다.
클래스의 상속, 포인터 형이 아닌 객체로 생성하는경우 등에서는 젂방선언 방식을 사용 할 수 없다.
멀티코어 빌드
• 다수의 프로세서를 홗용해서 빠른 속도로빌드할 수 있는 컴파일 옵션.
• /Gm 다중처리와 호홖되지 않는다.
• /MP[processMax]
빌드를 분산 시키자
• IncrediBuild
• 컴파일 속도를 개선하기 만들어진 네트워크 분산 빌딩 시스템.
• 대용량의 소스코드를 여러 대의 PC에 분산하여 빌드하는 것이다.
• 분산 빌드하는 PC가 많을수록 BuildTime이 단축 된다.
• http://www.slideshare.net/devcatpublications/ndc2010-unity-build
• NDC 2010 송창규님 의 발표자료.
Unity Build
• 대규모 프로젝트에서 효율적인 빌드 기법.
• IncrediBuild 와 같이 사용하면 효과 극대화.
• 프로젝트에 적용.
30 ~ 40분 6분
단점.
• 해당 소스파일이 클 경우에는 오류가 발생한다.
- 다수의 cpp파일에 소스를 분홗 시킨다.
• 전역/static 함수나 변수의 이름이 중복 될수 없다.
- 변수 선언 시 젂체검사로 중복되는 변수명이 있는지 체크 후 사용한다.
• Include 링크 오류를 조심해라.
- Commit 이나 배포시 디버그, 릯리즈 모드
로 빌드를 해서 확인 한다.
• 새로운 파일 추가/삭제 시 다시 재설정 해주어야 한다.
- .bat 파일을 만들어서 한번의 클릭으로 빌드 파일 자동생성.
머가 이렇게 꼼꼼하지?
• 하지만 사용해보면 이 꼼꼼함 보다 빌드시간이 단축되어서 생기는 효율이 더 크다.
정리
- 하드웨어 사양 업그레이드
- 미리 컴파일 된 헤더 사용
- 코드의 종속성 없애기
- 멀티코어 빌드 사용
- Unity Build
- Incredi Build
- 최고의 빌드 속도 빠빰~~~
END