2. 발표자 소개
송창규 innover
1999 년 한스타 개발
2002 년 넥슨 입사
2002 년 CA BnB, CA 테트리스 프로그래머
2002 년 디지팡 리드 프로그래머
2004 년 빅샷 리드 프로그래머
2006 년 버블파이터 리드 프로그래머
2010 년 M2 프로그래머
4. 느려터진 빌드, 빠르게 할 순 없을까?
빠른 iteration 의 적, 느린 build time
느려터진 빌드, 빠르게 할 순 없을까?
UnityBuild 로 빌드를 빠르게 해보자 !
UnityBuild 로
반토막낼수 있당게!
5. 오늘 할 이야기
우리가 모르던(간과하던) C++ 의 컴파일의 비밀을 짚어보고
Hello, World !
We Love Vector ♥
Unity Build 를 간단히 소개한 후
Unity Build 이야기 (사실 C++ 욕)
얼마나 빨라지는데?
Unity Build 과정을 단계별로 짚어보겠습니다
STEP 1: 일단 합치기
STEP 2: VS 에서 돌아가게
CHECKPOINT: 문제점
STEP 3: 자동화
STEP 4: 더 큰 프로젝트에서의 자동화
34. #include 야말로 8비트 PC 조차 없던 30년 전의 방식
최신기술과 개념으로 무장해가는 C++ 지만
#include 의 태생은 벗어날 수 없다
코드 재사용을 위해
#include 란걸 만들었다능
컴파일러 다시 안만들어도 됨ㅋ
변수명 줄여 임마
전체메모리
248KB 밖에 없어
최초의 C 탑재 Unix System
PDP-11 (1972)
35. “참조하는만큼 해석하리라”
50개 파일에서 vector<int>를 사용하면?
vector<int> 를 50번 컴파일
20개 파일에서 Network.h 를 참조하면?
Network.h 를 20번 컴파일
아..폭탄주 땡긴다
이런 언어를 사용하고 있었다니
37. 릴리즈 약 2배 향상
디버그는 3배 이상
경이로운 속도향상
프로젝트 BEFORE AFTER 감소율 속도차
Quake Wars 2:20 0:38 72.9% 감소 3.7배
Irrlicht 엔진 1:23 0:28 66.3% 감소 3.0배
프로젝트 A 약 30분 약 2~3분 91.7% 감소 12.0배
프로젝트 B 약 10분 3분이내 70.0% 감소 3.3배
버블파이터 6:50 1:50 73.2% 감소 3.7배
M2 Library A 0:55 0:18 67.3% 감소 3.0배
38. 경이로운 속도향상
대부분의 프로젝트에서 큰 효과
http://cheind.wordpress.com/2009/12/10/reducing-compilation-time-unity-builds/
58. 자동화를 하려면?
자동화 항목
적당한 기준에 따라 파일 나누기
UnityBuildXX.cpp 로 묶기
프로젝트에 Unity 빌드설정 추가
기존 빌드설정에서 UnityBuildXX.cpp 를 빌드 제외
Unity 빌드설정에서 나머지 .cpp 를 빌드에서 제외
59. 버블파이터 사례
자동화 항목 버블 파이터
적당한 기준에 따라 파일 나누기 무조건 10개로 나눔
UnityBuildXX.cpp 로 묶기 UnityMaker 자동화
프로젝트에 Unity 빌드설정 추가 수동
기존 빌드설정에서 UnityBuildXX.cpp 를 빌드 제외 수동
Unity 빌드설정에서 나머지 .cpp 를 빌드에서 제외 UnityMaker 자동화
64. 대규모 프로젝트: M2
프로젝트만 44개 !
빌드설정 두개씩만 추가해도 88개
UnityBuild 파일 10개씩 등록하면 440개
빌드설정별로 ‘빌드에서 제외’ 설정
Precompiled Header 처리
대부분 과정에 자동화가 필요
65. M2 프로젝트 사례
자동화 항목 M2 프로젝트
적당한 기준에 따라 파일 나누기 그룹 설정 후 자동화
UnityBuildXX.cpp 로 묶기 자동화
프로젝트에 Unity 빌드설정 추가 자동화
기존 빌드설정에서 UnityBuildXX.cpp 를 빌드 제외 자동화
Unity 빌드설정에서 나머지 .cpp 를 빌드에서 제외 자동화
66. M2 UnityMaker
버블파이터의 그것과 기본은 비슷
Project Independant 하게
python 으로 제작
자동화 추가
커스텀 그루핑
프로젝트 설정 추가
Unity 파일의 추가와 설정
Precompiled Header 설정
컴파일러 설정 추가
67. M2 Unity Maker
최초 실행시 vcproj 에서
UnityBuildGroup 생성
변경된 파일만 적용해서
vcproj 와 cpp 로 출력
추가 변경 후
반복 적용가능
68. 개발자들 python 깔아야 하나요?
매번 돌리지 않아도 됩니다
파일 추가해도 OK
담당자가 심심할때 돌려줘도 됩니다
After1.cpp
After2.cpp
추가
69. 빌드 타임 줄이고 행복해지세요~
프로젝트가 매우 크지만 않다면...
금방 적용 가능합니다