SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
빌드 속도를 올려보자



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

Weitere ähnliche Inhalte

Was ist angesagt?

임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012devCAT Studio, NEXON
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013devCAT 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 IOCPSeungmo Koo
 
Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architectureJongwon Kim
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)Seungmo Koo
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
 
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)YEONG-CHEON YOU
 
그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기Yongha Kim
 
TERA Server Architecture
TERA Server ArchitectureTERA Server Architecture
TERA Server Architectureujentus
 
게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조Hyunjik Bae
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019devCAT Studio, NEXON
 
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화Jaeseung Ha
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략YEONG-CHEON YOU
 
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁Yi-kwon Hwang
 
[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬KyeongWon Koo
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀승명 양
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceXionglong Jin
 
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018devCAT Studio, NEXON
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012devCAT Studio, NEXON
 

Was ist angesagt? (20)

임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
 
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
 
Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architecture
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
 
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)
 
그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기
 
TERA Server Architecture
TERA Server ArchitectureTERA Server Architecture
TERA Server Architecture
 
게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
 
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략
 
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
 
[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
 
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
 

Andere mochten auch

[0122 구경원]게임에서의 충돌처리
[0122 구경원]게임에서의 충돌처리[0122 구경원]게임에서의 충돌처리
[0122 구경원]게임에서의 충돌처리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
 
Effective c++ 4
Effective c++ 4Effective c++ 4
Effective c++ 4현찬 양
 
[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개MinGeun Park
 
[UniteKorea2013] Unity Hacks
[UniteKorea2013] Unity Hacks[UniteKorea2013] Unity Hacks
[UniteKorea2013] Unity HacksWilliam 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 2010CLOUDIAN 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
 
제5장 스태틱 메쉬
제5장 스태틱 메쉬제5장 스태틱 메쉬
제5장 스태틱 메쉬KyeongWon Koo
 
선형연립방정식 가우스소거법
선형연립방정식 가우스소거법선형연립방정식 가우스소거법
선형연립방정식 가우스소거법KyeongWon Koo
 
유니티 Rpg게임배경 스타트업 두번째 스터디자료
유니티 Rpg게임배경 스타트업 두번째 스터디자료유니티 Rpg게임배경 스타트업 두번째 스터디자료
유니티 Rpg게임배경 스타트업 두번째 스터디자료Je Lyoung Kim
 
[Gpg2권 구경원] 3.4 rts 게임의 명령 큐잉을 위한 기반 구조
[Gpg2권 구경원] 3.4 rts 게임의 명령 큐잉을 위한 기반 구조[Gpg2권 구경원] 3.4 rts 게임의 명령 큐잉을 위한 기반 구조
[Gpg2권 구경원] 3.4 rts 게임의 명령 큐잉을 위한 기반 구조KyeongWon Koo
 

Andere mochten auch (20)

[0122 구경원]게임에서의 충돌처리
[0122 구경원]게임에서의 충돌처리[0122 구경원]게임에서의 충돌처리
[0122 구경원]게임에서의 충돌처리
 
[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기
 
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
 
[0204 구경원] sse 병렬 프로그래밍
[0204 구경원] sse 병렬 프로그래밍[0204 구경원] sse 병렬 프로그래밍
[0204 구경원] sse 병렬 프로그래밍
 
Effective c++ 4
Effective c++ 4Effective c++ 4
Effective c++ 4
 
[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개
 
Easyloggingpp
EasyloggingppEasyloggingpp
Easyloggingpp
 
[UniteKorea2013] Unity Hacks
[UniteKorea2013] Unity Hacks[UniteKorea2013] Unity Hacks
[UniteKorea2013] Unity Hacks
 
Python Usage (5-minute-summary)
Python Usage (5-minute-summary)Python Usage (5-minute-summary)
Python Usage (5-minute-summary)
 
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
 
자본시장IT의 미래 오픈소스에서 답을 구하라
자본시장IT의 미래 오픈소스에서 답을 구하라자본시장IT의 미래 오픈소스에서 답을 구하라
자본시장IT의 미래 오픈소스에서 답을 구하라
 
[Gpg2권 구경원] 3.1 ai전략
[Gpg2권 구경원] 3.1 ai전략[Gpg2권 구경원] 3.1 ai전략
[Gpg2권 구경원] 3.1 ai전략
 
[Gpg2권]1.1 c++ 게임의 최적화
[Gpg2권]1.1 c++ 게임의 최적화[Gpg2권]1.1 c++ 게임의 최적화
[Gpg2권]1.1 c++ 게임의 최적화
 
[Gpg2권]4.7 인쇄해상도의 스크린샷 만들기
[Gpg2권]4.7 인쇄해상도의 스크린샷 만들기[Gpg2권]4.7 인쇄해상도의 스크린샷 만들기
[Gpg2권]4.7 인쇄해상도의 스크린샷 만들기
 
[페차쿠차] 3월 19일 아이디어에 미쳐보자!
[페차쿠차] 3월 19일 아이디어에 미쳐보자![페차쿠차] 3월 19일 아이디어에 미쳐보자!
[페차쿠차] 3월 19일 아이디어에 미쳐보자!
 
제5장 스태틱 메쉬
제5장 스태틱 메쉬제5장 스태틱 메쉬
제5장 스태틱 메쉬
 
[데브루키] FOG
[데브루키] FOG[데브루키] FOG
[데브루키] FOG
 
선형연립방정식 가우스소거법
선형연립방정식 가우스소거법선형연립방정식 가우스소거법
선형연립방정식 가우스소거법
 
유니티 Rpg게임배경 스타트업 두번째 스터디자료
유니티 Rpg게임배경 스타트업 두번째 스터디자료유니티 Rpg게임배경 스타트업 두번째 스터디자료
유니티 Rpg게임배경 스타트업 두번째 스터디자료
 
[Gpg2권 구경원] 3.4 rts 게임의 명령 큐잉을 위한 기반 구조
[Gpg2권 구경원] 3.4 rts 게임의 명령 큐잉을 위한 기반 구조[Gpg2권 구경원] 3.4 rts 게임의 명령 큐잉을 위한 기반 구조
[Gpg2권 구경원] 3.4 rts 게임의 명령 큐잉을 위한 기반 구조
 

Ähnlich wie 빌드 속도를 올려보자

이승재, 박경재, 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, NDC2017devCAT Studio, NEXON
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈NAVER D2
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In ProductionMooYeol 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
 
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화Jaehoon Choi
 
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 iFunFactory Inc.
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기Sumin Byeon
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15Chanwoong Kim
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018devCAT 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
 
삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdfSeung 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 SMARTSTUDYHyun-woo Park
 
Bon voyage Docker_Kubernetes
Bon voyage Docker_KubernetesBon voyage Docker_Kubernetes
Bon voyage Docker_Kubernetesssuseraada82
 
하드웨어 스타트업의 소프트웨어 이야기
하드웨어 스타트업의 소프트웨어 이야기하드웨어 스타트업의 소프트웨어 이야기
하드웨어 스타트업의 소프트웨어 이야기Mijeong Park
 

Ähnlich wie 빌드 속도를 올려보자 (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
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
 
Aws로 ci하기 안기욱
Aws로 ci하기 안기욱Aws로 ci하기 안기욱
Aws로 ci하기 안기욱
 
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
 
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화
 
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
 
Ninja
NinjaNinja
Ninja
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
 
스마일게이트 서버개발캠프 - HGHSS - 합격하소서
스마일게이트 서버개발캠프 - HGHSS - 합격하소서스마일게이트 서버개발캠프 - HGHSS - 합격하소서
스마일게이트 서버개발캠프 - HGHSS - 합격하소서
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
 
[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)
 
AWS + Docker in Vingle
AWS + Docker in VingleAWS + Docker in Vingle
AWS + Docker in Vingle
 
삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf
 
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
 
Bon voyage Docker_Kubernetes
Bon voyage Docker_KubernetesBon voyage Docker_Kubernetes
Bon voyage Docker_Kubernetes
 
하드웨어 스타트업의 소프트웨어 이야기
하드웨어 스타트업의 소프트웨어 이야기하드웨어 스타트업의 소프트웨어 이야기
하드웨어 스타트업의 소프트웨어 이야기
 

빌드 속도를 올려보자

  • 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