ݺߣ

ݺߣShare a Scribd company logo
빌드 속도를 올려보자



      (구경원)돼지고기
         데브루키
• 개발이 많이 진행 될 수록 빌드 속도도 느
  려진다. ( 넘쳐나는 파일, 넘쳐나는 리소스, 넘쳐나는
 버그 등 )
• 사소한 수정으로 인한 재 빌드는 더욱더
  일의 효율을 떨어트릮다.
• 사소한 소스의 수정은 항상 이루어 진다—
- “나는 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
  이 단축 된다.
Unity Build
• http://www.slideshare.net/devcatpublicati
  ons/ndc2010-unity-build

• NDC 2010 송창규님 의 발표자료.
• 대규모 프로젝트에서 효율적인 빌드 기법.
• IncrediBuild 와 같이 사용하면 효과 극대
  화.

• 프로젝트에 적용.

 30 ~ 40분        6분
빌드 속도를 올려보자
단점.
• 해당 소스파일이 클 경우에는 오류가 발생
  한다.
- 다수의 cpp파일에 소스를 분홗 시킨다.

• 전역/static 함수나 변수의 이름이 중복 될
  수 없다.
- 변수 선언 시 젂체검사로 중복되는 변수
  명이 있는지 체크 후 사용한다.
• Include 링크 오류를 조심해라.
- Commit 이나 배포시 디버그, 릯리즈 모드
   로 빌드를 해서 확인 한다.

• 새로운 파일 추가/삭제 시 다시 재설정 해
  주어야 한다.
- .bat 파일을 만들어서 한번의 클릭으로 빌
  드 파일 자동생성.
머가 이렇게 꼼꼼하지?

• 하지만 사용해보면 이 꼼꼼함 보다 빌드시
  간이 단축되어서 생기는 효율이 더 크다.
정리
-   하드웨어 사양 업그레이드
-   미리 컴파일 된 헤더 사용
-   코드의 종속성 없애기
-   멀티코어 빌드 사용
-   Unity Build
-   Incredi Build


- 최고의 빌드 속도 빠빰~~~
END

More Related Content

What's hot (20)

[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
강 민우
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
devCAT Studio, NEXON
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
devCAT Studio, NEXON
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
Heungsub Lee
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
devCAT Studio, NEXON
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCP
Seungmo Koo
게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP
Seungmo Koo
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
Heungsub Lee
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
내훈 정
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
devCAT Studio, NEXON
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
Sang Heon Lee
Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theorem
Seungmo Koo
Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architecture
Jongwon Kim
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
YEONG-CHEON YOU
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
Chris Ohk
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
Jaeseung Ha
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
devCAT Studio, NEXON
Windows system - memory개념잡기
Windows system - memory개념잡기Windows system - memory개념잡기
Windows system - memory개념잡기
ChangKyu Song
[C++ Korea] C++ 메모리 모델과 atomic 타입 연산들
[C++ Korea] C++ 메모리 모델과 atomic 타입 연산들[C++ Korea] C++ 메모리 모델과 atomic 타입 연산들
[C++ Korea] C++ 메모리 모델과 atomic 타입 연산들
DongMin Choi
중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직
Hoyoung Choi
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
강 민우
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
devCAT Studio, NEXON
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
devCAT Studio, NEXON
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
Heungsub Lee
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
devCAT Studio, NEXON
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCP
Seungmo Koo
게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP
Seungmo Koo
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
Heungsub Lee
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
내훈 정
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
devCAT Studio, NEXON
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
Sang Heon Lee
Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theorem
Seungmo Koo
Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architecture
Jongwon Kim
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
YEONG-CHEON YOU
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
Chris Ohk
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
Jaeseung Ha
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
devCAT Studio, NEXON
Windows system - memory개념잡기
Windows system - memory개념잡기Windows system - memory개념잡기
Windows system - memory개념잡기
ChangKyu Song
[C++ Korea] C++ 메모리 모델과 atomic 타입 연산들
[C++ Korea] C++ 메모리 모델과 atomic 타입 연산들[C++ Korea] C++ 메모리 모델과 atomic 타입 연산들
[C++ Korea] C++ 메모리 모델과 atomic 타입 연산들
DongMin Choi
중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직
Hoyoung Choi

Viewers also liked (20)

[0122 구경원]게임에서의 충돌처리
[0122 구경원]게임에서의 충돌처리[0122 구경원]게임에서의 충돌처리
[0122 구경원]게임에서의 충돌처리
KyeongWon Koo
[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬
KyeongWon Koo
[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기
MinGeun Park
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
ChangKyu Song
[0204 구경원] sse 병렬 프로그래밍
[0204 구경원] sse 병렬 프로그래밍[0204 구경원] sse 병렬 프로그래밍
[0204 구경원] sse 병렬 프로그래밍
KyeongWon Koo
[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개
MinGeun Park
Easyloggingpp
EasyloggingppEasyloggingpp
Easyloggingpp
지환 김
[UniteKorea2013] Unity Hacks
[UniteKorea2013] Unity Hacks[UniteKorea2013] Unity Hacks
[UniteKorea2013] Unity Hacks
William Hugo Yang
Python Usage (5-minute-summary)
Python Usage (5-minute-summary)Python Usage (5-minute-summary)
Python Usage (5-minute-summary)
Ohgyun Ahn
HIbari/NOSQL/Erlang for Big Data at Erlang User Conference 2010
HIbari/NOSQL/Erlang for Big Data at Erlang User Conference 2010HIbari/NOSQL/Erlang for Big Data at Erlang User Conference 2010
HIbari/NOSQL/Erlang for Big Data at Erlang User Conference 2010
CLOUDIAN KK
자본시장IT의 미래 오픈소스에서 답을 구하라
자본시장IT의 미래 오픈소스에서 답을 구하라자본시장IT의 미래 오픈소스에서 답을 구하라
자본시장IT의 미래 오픈소스에서 답을 구하라
heungjae Kim
[Gpg2권 구경원] 3.1 ai전략
[Gpg2권 구경원] 3.1 ai전략[Gpg2권 구경원] 3.1 ai전략
[Gpg2권 구경원] 3.1 ai전략
KyeongWon Koo
[Gpg2권]1.1 c++ 게임의 최적화
[Gpg2권]1.1 c++ 게임의 최적화[Gpg2권]1.1 c++ 게임의 최적화
[Gpg2권]1.1 c++ 게임의 최적화
KyeongWon Koo
[Gpg2권]4.7 인쇄해상도의 스크린샷 만들기
[Gpg2권]4.7 인쇄해상도의 스크린샷 만들기[Gpg2권]4.7 인쇄해상도의 스크린샷 만들기
[Gpg2권]4.7 인쇄해상도의 스크린샷 만들기
KyeongWon Koo
[페차쿠차] 3월 19일 아이디어에 미쳐보자!
[페차쿠차] 3월 19일 아이디어에 미쳐보자![페차쿠차] 3월 19일 아이디어에 미쳐보자!
[페차쿠차] 3월 19일 아이디어에 미쳐보자!
KyeongWon Koo
선형연립방정식 가우스소거법
선형연립방정식 가우스소거법선형연립방정식 가우스소거법
선형연립방정식 가우스소거법
KyeongWon Koo
유니티 Rpg게임배경 스타트업 두번째 스터디자료
유니티 Rpg게임배경 스타트업 두번째 스터디자료유니티 Rpg게임배경 스타트업 두번째 스터디자료
유니티 Rpg게임배경 스타트업 두번째 스터디자료
Je Lyoung Kim
[0122 구경원]게임에서의 충돌처리
[0122 구경원]게임에서의 충돌처리[0122 구경원]게임에서의 충돌처리
[0122 구경원]게임에서의 충돌처리
KyeongWon Koo
[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬
KyeongWon Koo
[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기
MinGeun Park
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
ChangKyu Song
[0204 구경원] sse 병렬 프로그래밍
[0204 구경원] sse 병렬 프로그래밍[0204 구경원] sse 병렬 프로그래밍
[0204 구경원] sse 병렬 프로그래밍
KyeongWon Koo
[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개
MinGeun Park
Python Usage (5-minute-summary)
Python Usage (5-minute-summary)Python Usage (5-minute-summary)
Python Usage (5-minute-summary)
Ohgyun Ahn
HIbari/NOSQL/Erlang for Big Data at Erlang User Conference 2010
HIbari/NOSQL/Erlang for Big Data at Erlang User Conference 2010HIbari/NOSQL/Erlang for Big Data at Erlang User Conference 2010
HIbari/NOSQL/Erlang for Big Data at Erlang User Conference 2010
CLOUDIAN KK
자본시장IT의 미래 오픈소스에서 답을 구하라
자본시장IT의 미래 오픈소스에서 답을 구하라자본시장IT의 미래 오픈소스에서 답을 구하라
자본시장IT의 미래 오픈소스에서 답을 구하라
heungjae Kim
[Gpg2권 구경원] 3.1 ai전략
[Gpg2권 구경원] 3.1 ai전략[Gpg2권 구경원] 3.1 ai전략
[Gpg2권 구경원] 3.1 ai전략
KyeongWon Koo
[Gpg2권]1.1 c++ 게임의 최적화
[Gpg2권]1.1 c++ 게임의 최적화[Gpg2권]1.1 c++ 게임의 최적화
[Gpg2권]1.1 c++ 게임의 최적화
KyeongWon Koo
[Gpg2권]4.7 인쇄해상도의 스크린샷 만들기
[Gpg2권]4.7 인쇄해상도의 스크린샷 만들기[Gpg2권]4.7 인쇄해상도의 스크린샷 만들기
[Gpg2권]4.7 인쇄해상도의 스크린샷 만들기
KyeongWon Koo
[페차쿠차] 3월 19일 아이디어에 미쳐보자!
[페차쿠차] 3월 19일 아이디어에 미쳐보자![페차쿠차] 3월 19일 아이디어에 미쳐보자!
[페차쿠차] 3월 19일 아이디어에 미쳐보자!
KyeongWon Koo
선형연립방정식 가우스소거법
선형연립방정식 가우스소거법선형연립방정식 가우스소거법
선형연립방정식 가우스소거법
KyeongWon Koo
유니티 Rpg게임배경 스타트업 두번째 스터디자료
유니티 Rpg게임배경 스타트업 두번째 스터디자료유니티 Rpg게임배경 스타트업 두번째 스터디자료
유니티 Rpg게임배경 스타트업 두번째 스터디자료
Je Lyoung Kim

Similar to 빌드 속도를 올려보자 (20)

이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
devCAT Studio, NEXON
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈
NAVER D2
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
MooYeol Lee
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
Chanwoong Kim
Aws로 ci하기 안기욱
Aws로 ci하기 안기욱Aws로 ci하기 안기욱
Aws로 ci하기 안기욱
AWSKRUG - AWS한국사용자모임
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
CONNECT FOUNDATION
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
Yi-kwon Hwang
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화
Jaehoon Choi
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
iFunFactory Inc.
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
Sumin Byeon
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15
Chanwoong Kim
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
devCAT Studio, NEXON
스마일게이트 서버개발캠프 - HGHSS - 합격하소서
스마일게이트 서버개발캠프 - HGHSS - 합격하소서스마일게이트 서버개발캠프 - HGHSS - 합격하소서
스마일게이트 서버개발캠프 - HGHSS - 합격하소서
ServerDevCamp
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
Brian Hong
[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)
Ildoo Kim
AWS + Docker in Vingle
AWS + Docker in VingleAWS + Docker in Vingle
AWS + Docker in Vingle
D C
ᅡᆱᄋƵᄑƧᆫᅵᅳᆫ_ᆨᄋƦᆫᅳƢᄇơᆯᅡᅵᅵᆨ.
ᅡᆱᄋƵᄑƧᆫᅵᅳᆫ_ᆨᄋƦᆫᅳƢᄇơᆯᅡᅵᅵᆨ.ᅡᆱᄋƵᄑƧᆫᅵᅳᆫ_ᆨᄋƦᆫᅳƢᄇơᆯᅡᅵᅵᆨ.
ᅡᆱᄋƵᄑƧᆫᅵᅳᆫ_ᆨᄋƦᆫᅳƢᄇơᆯᅡᅵᅵᆨ.
Seung kyoo Park
Do not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDYDo not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDY
Hyun-woo Park
Bon voyage Docker_Kubernetes
Bon voyage Docker_KubernetesBon voyage Docker_Kubernetes
Bon voyage Docker_Kubernetes
ssuseraada82
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
devCAT Studio, NEXON
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈
NAVER D2
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
MooYeol Lee
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
Chanwoong Kim
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
CONNECT FOUNDATION
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
Yi-kwon Hwang
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화
Jaehoon Choi
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
iFunFactory Inc.
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
Sumin Byeon
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15
Chanwoong Kim
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
devCAT Studio, NEXON
스마일게이트 서버개발캠프 - HGHSS - 합격하소서
스마일게이트 서버개발캠프 - HGHSS - 합격하소서스마일게이트 서버개발캠프 - HGHSS - 합격하소서
스마일게이트 서버개발캠프 - HGHSS - 합격하소서
ServerDevCamp
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
Brian Hong
[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)
Ildoo Kim
AWS + Docker in Vingle
AWS + Docker in VingleAWS + Docker in Vingle
AWS + Docker in Vingle
D C
ᅡᆱᄋƵᄑƧᆫᅵᅳᆫ_ᆨᄋƦᆫᅳƢᄇơᆯᅡᅵᅵᆨ.
ᅡᆱᄋƵᄑƧᆫᅵᅳᆫ_ᆨᄋƦᆫᅳƢᄇơᆯᅡᅵᅵᆨ.ᅡᆱᄋƵᄑƧᆫᅵᅳᆫ_ᆨᄋƦᆫᅳƢᄇơᆯᅡᅵᅵᆨ.
ᅡᆱᄋƵᄑƧᆫᅵᅳᆫ_ᆨᄋƦᆫᅳƢᄇơᆯᅡᅵᅵᆨ.
Seung kyoo Park
Do not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDYDo not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDY
Hyun-woo Park
Bon voyage Docker_Kubernetes
Bon voyage Docker_KubernetesBon voyage Docker_Kubernetes
Bon voyage Docker_Kubernetes
ssuseraada82

빌드 속도를 올려보자

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