SlideShare uma empresa Scribd logo
1 de 16
6~7장. 성능과 메모리 DreamexeWarrock Client  Team : 최준혁
overview DreamexeWarrock Client  Team : 최준혁
성능에 대한 고려 DreamexeWarrock Client  Team : 최준혁
함수의 타입 DreamexeWarrock Client  Team : 최준혁
전역 함수 intnHitPoints= GetHitPoints(gameUnit);// Example DreamexeWarrock Client  Team : 최준혁
클래스 정적 함수 intnumUnits= GameUnit::GetNumUnits();// Example 비 가상 멤버 함수 GameUnitgameUnit; // 인스턴스 생성 IntnHitPoints= gameUnit.GetHitPoints();   // 멤버 함수 호출 DreamexeWarrock Client  Team : 최준혁
단일 상속에서의 가상 함수 GameUnit* pGameUnit= new SomeGameUnit; // 부모 클래스 인스턴스에 자식 클래스 할당 pGameUnit -> RunAI(); // 가상 함수 호출 GameUnit virtual void RunAI() {     // virtual function } SomeGameUnit 상속 void RunAI() { // Override code} DreamexeWarrock Client  Team : 최준혁
다중상속에서의 가상 함수 C A A A B C B B Vtable Layout C DreamexeWarrock Client  Team : 최준혁
인라인화 If ( gameUnit.IsActive() ) {      // … } Class GameUnit { inlineboolGameUnit::IsActive() const     {         return m_bActive;    } }; If ( gameUnit.m_bActive ) {      // … } DreamexeWarrock Client  Team : 최준혁
부가적인 함수 오버헤드 DreamexeWarrock Client  Team : 최준혁
CPU가 빠를 수록, 메모리가 느릴수록 더 많은 사이클 대부분의 캐시는 32바이트, 개체의 크기를 32byte또는 그 배수로 맞추자 캐시와 메모리 정렬 512M * 6 = 3GHz                       6 * 6 = 36CPU Cycle 3GHz 512Mhz CPU Chace Memory 6 6 0xC0001F 0xC00020 (32) 0xC00024 Chace ~ (36) (63) 0xC0003F 0xC00040 DreamexeWarrock Client  Team : 최준혁
동적 할당 테스트 void main() { 	char* p1 = new char[32]; printf("p1: %p", p1); 	char* p2 = new char[32]; printf("p2 :%p", p2); 	char* p3 = new char[32]; printf("p3 :%p", p3); 	char* p4 = new char[32]; printf("p4 :%p", p4); 	char* p5 = new char[32]; printf("p5 :%p", p5); 	delete p2; 	delete p4; 	char* p6 = new char[32]; printf("p6 :%p", p6); } 여러 번 할당과 해제를 반복하면 메모리 단편화(임의 순으로 메모리 배정되기 때문) DreamexeWarrock Client  Team : 최준혁
메모리 관리자와 메모리풀 DreamexeWarrock Client  Team : 최준혁
메모리풀#1 class MemoryPooler { public: 	virtual ~MemoryPooler() {} 	void* operator new(size_t size) { // new 연산자 오버로딩 		return s_pool.Alloc(size); } 	void operator delete(void* obj, size_t size) { //  delete 연산자 오버로딩 s_pool.Free(obj, size); } private: 	static MemoryPools_pool; }; MemoryPoolMemoryPooler::s_pool; MemoryPool MemoryPooler A B C Main(테스트코드) DreamexeWarrock Client  Team : 최준혁
메모리풀#2 A B C Main(테스트코드) DreamexeWarrock Client  Team : 최준혁
결론 메모리 풀 적극적 활용 클래스별로 메모리풀이 있는 것이 좋다. (범용 풀도 클래스별로 나누어 주어야 한다.) DreamexeWarrock Client  Team : 최준혁

Mais conteúdo relacionado

Mais procurados

React로 TDD 쵸큼 맛보기
React로 TDD 쵸큼 맛보기React로 TDD 쵸큼 맛보기
React로 TDD 쵸큼 맛보기Kim Hunmin
 
20150212 c++11 features used in crow
20150212 c++11 features used in crow20150212 c++11 features used in crow
20150212 c++11 features used in crowJaeseung Ha
 
목적이 부여된 에이전트 행동
목적이 부여된 에이전트 행동목적이 부여된 에이전트 행동
목적이 부여된 에이전트 행동Hyosung Jeon
 
어플 개발자의 서버개발 삽질기
어플 개발자의 서버개발 삽질기어플 개발자의 서버개발 삽질기
어플 개발자의 서버개발 삽질기scor7910
 
Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기jongho jeong
 
[JS] Function.prototype.bind
[JS] Function.prototype.bind[JS] Function.prototype.bind
[JS] Function.prototype.bindJinhyuck Kim
 
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로Jaeseung Ha
 
[방송통신대 컴퓨터과학과] C++ 프로그래밍 과제물 작성
[방송통신대 컴퓨터과학과] C++ 프로그래밍 과제물 작성[방송통신대 컴퓨터과학과] C++ 프로그래밍 과제물 작성
[방송통신대 컴퓨터과학과] C++ 프로그래밍 과제물 작성Lee Sang-Ho
 
7주 JavaScript Part2
7주 JavaScript Part27주 JavaScript Part2
7주 JavaScript Part2지수 윤
 
Rk charactionbalance다이어그램
Rk charactionbalance다이어그램Rk charactionbalance다이어그램
Rk charactionbalance다이어그램lee
 
Promise 패턴 공부
Promise 패턴 공부Promise 패턴 공부
Promise 패턴 공부HongGun Yoo
 
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013Esun Kim
 
파이썬 언어 기초
파이썬 언어 기초파이썬 언어 기초
파이썬 언어 기초beom kyun choi
 
[방송통신대 컴퓨터과학과] C 프로그래밍 과제물 작성
[방송통신대 컴퓨터과학과] C 프로그래밍 과제물 작성[방송통신대 컴퓨터과학과] C 프로그래밍 과제물 작성
[방송통신대 컴퓨터과학과] C 프로그래밍 과제물 작성Lee Sang-Ho
 
ARTIK 710 IoT class 02
ARTIK 710 IoT class 02ARTIK 710 IoT class 02
ARTIK 710 IoT class 02정출 김
 
JavaScript Promises
JavaScript PromisesJavaScript Promises
JavaScript Promises우영 주
 
14장 - 15장 예외처리, 템플릿
14장 - 15장 예외처리, 템플릿14장 - 15장 예외처리, 템플릿
14장 - 15장 예외처리, 템플릿유석 남
 
Naver api for android
Naver api for androidNaver api for android
Naver api for androidSangon Lee
 
Startup JavaScript 9 - Socket.IO 실시간 통신
Startup JavaScript 9 - Socket.IO 실시간 통신Startup JavaScript 9 - Socket.IO 실시간 통신
Startup JavaScript 9 - Socket.IO 실시간 통신Circulus
 

Mais procurados (20)

React로 TDD 쵸큼 맛보기
React로 TDD 쵸큼 맛보기React로 TDD 쵸큼 맛보기
React로 TDD 쵸큼 맛보기
 
20150212 c++11 features used in crow
20150212 c++11 features used in crow20150212 c++11 features used in crow
20150212 c++11 features used in crow
 
목적이 부여된 에이전트 행동
목적이 부여된 에이전트 행동목적이 부여된 에이전트 행동
목적이 부여된 에이전트 행동
 
어플 개발자의 서버개발 삽질기
어플 개발자의 서버개발 삽질기어플 개발자의 서버개발 삽질기
어플 개발자의 서버개발 삽질기
 
Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기
 
[JS] Function.prototype.bind
[JS] Function.prototype.bind[JS] Function.prototype.bind
[JS] Function.prototype.bind
 
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
 
[방송통신대 컴퓨터과학과] C++ 프로그래밍 과제물 작성
[방송통신대 컴퓨터과학과] C++ 프로그래밍 과제물 작성[방송통신대 컴퓨터과학과] C++ 프로그래밍 과제물 작성
[방송통신대 컴퓨터과학과] C++ 프로그래밍 과제물 작성
 
7주 JavaScript Part2
7주 JavaScript Part27주 JavaScript Part2
7주 JavaScript Part2
 
Rk charactionbalance다이어그램
Rk charactionbalance다이어그램Rk charactionbalance다이어그램
Rk charactionbalance다이어그램
 
Promise 패턴 공부
Promise 패턴 공부Promise 패턴 공부
Promise 패턴 공부
 
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
 
파이썬 언어 기초
파이썬 언어 기초파이썬 언어 기초
파이썬 언어 기초
 
[방송통신대 컴퓨터과학과] C 프로그래밍 과제물 작성
[방송통신대 컴퓨터과학과] C 프로그래밍 과제물 작성[방송통신대 컴퓨터과학과] C 프로그래밍 과제물 작성
[방송통신대 컴퓨터과학과] C 프로그래밍 과제물 작성
 
ARTIK 710 IoT class 02
ARTIK 710 IoT class 02ARTIK 710 IoT class 02
ARTIK 710 IoT class 02
 
JavaScript Promises
JavaScript PromisesJavaScript Promises
JavaScript Promises
 
14장 - 15장 예외처리, 템플릿
14장 - 15장 예외처리, 템플릿14장 - 15장 예외처리, 템플릿
14장 - 15장 예외처리, 템플릿
 
Naver api for android
Naver api for androidNaver api for android
Naver api for android
 
Startup JavaScript 9 - Socket.IO 실시간 통신
Startup JavaScript 9 - Socket.IO 실시간 통신Startup JavaScript 9 - Socket.IO 실시간 통신
Startup JavaScript 9 - Socket.IO 실시간 통신
 
DB와암호화 패턴
DB와암호화 패턴DB와암호화 패턴
DB와암호화 패턴
 

Destaque

GameMath-Chapter 01 벡터
GameMath-Chapter 01 벡터GameMath-Chapter 01 벡터
GameMath-Chapter 01 벡터Mark Choi
 
02.선형변환과 행렬
02.선형변환과 행렬02.선형변환과 행렬
02.선형변환과 행렬JaeHong Park
 
Game math.points and lines
Game math.points and linesGame math.points and lines
Game math.points and linesHoseo University
 
120428 게임 프로그래머를 위한 기초수학과 물리 제 5장 행렬연산
120428 게임 프로그래머를 위한 기초수학과 물리   제 5장 행렬연산 120428 게임 프로그래머를 위한 기초수학과 물리   제 5장 행렬연산
120428 게임 프로그래머를 위한 기초수학과 물리 제 5장 행렬연산 tedypicker
 
GameMath-Chapter 03 변환
GameMath-Chapter 03 변환GameMath-Chapter 03 변환
GameMath-Chapter 03 변환Mark Choi
 
GameMath-Chapter 11 운동학
GameMath-Chapter 11 운동학GameMath-Chapter 11 운동학
GameMath-Chapter 11 운동학Mark Choi
 
GameMath-Chapter 13 발사체
GameMath-Chapter 13 발사체GameMath-Chapter 13 발사체
GameMath-Chapter 13 발사체Mark Choi
 
게임에서 사용 가능한 간편한 파서
게임에서 사용 가능한 간편한 파서게임에서 사용 가능한 간편한 파서
게임에서 사용 가능한 간편한 파서JaeHong Park
 
Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Thisisone Lee
 
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산Taeung Ra
 
게임 프로그래머를 위한 기초 수학 및 물리 - 9장
게임 프로그래머를 위한 기초 수학 및 물리 - 9장게임 프로그래머를 위한 기초 수학 및 물리 - 9장
게임 프로그래머를 위한 기초 수학 및 물리 - 9장JangHyuk You
 
초등학생 프로그래밍 교육과정_스크래치 교육 과정안_송상수
초등학생 프로그래밍 교육과정_스크래치 교육 과정안_송상수초등학생 프로그래밍 교육과정_스크래치 교육 과정안_송상수
초등학생 프로그래밍 교육과정_스크래치 교육 과정안_송상수Sangsu Song
 
게임수학 강의노트 1부
게임수학 강의노트 1부게임수학 강의노트 1부
게임수학 강의노트 1부Young-Min kang
 
게임에서 사용할 수 있는 포물선 운동
게임에서 사용할 수 있는 포물선 운동게임에서 사용할 수 있는 포물선 운동
게임에서 사용할 수 있는 포물선 운동세민 이
 
[NDC12] 게임 물리 엔진의 내부 동작 원리 이해
[NDC12] 게임 물리 엔진의 내부 동작 원리 이해[NDC12] 게임 물리 엔진의 내부 동작 원리 이해
[NDC12] 게임 물리 엔진의 내부 동작 원리 이해종빈 오
 
게임 프로그래머를 위한 기초 수학 및 물리 - 8장
게임 프로그래머를 위한 기초 수학 및 물리 - 8장게임 프로그래머를 위한 기초 수학 및 물리 - 8장
게임 프로그래머를 위한 기초 수학 및 물리 - 8장JangHyuk You
 
[아꿈사] 게임 기초 수학 물리 1,2장
[아꿈사] 게임 기초 수학 물리 1,2장[아꿈사] 게임 기초 수학 물리 1,2장
[아꿈사] 게임 기초 수학 물리 1,2장sung ki choi
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법Chris Ohk
 
게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)Lee Sangkyoon (Kay)
 
프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법Lee Sangkyoon (Kay)
 

Destaque (20)

GameMath-Chapter 01 벡터
GameMath-Chapter 01 벡터GameMath-Chapter 01 벡터
GameMath-Chapter 01 벡터
 
02.선형변환과 행렬
02.선형변환과 행렬02.선형변환과 행렬
02.선형변환과 행렬
 
Game math.points and lines
Game math.points and linesGame math.points and lines
Game math.points and lines
 
120428 게임 프로그래머를 위한 기초수학과 물리 제 5장 행렬연산
120428 게임 프로그래머를 위한 기초수학과 물리   제 5장 행렬연산 120428 게임 프로그래머를 위한 기초수학과 물리   제 5장 행렬연산
120428 게임 프로그래머를 위한 기초수학과 물리 제 5장 행렬연산
 
GameMath-Chapter 03 변환
GameMath-Chapter 03 변환GameMath-Chapter 03 변환
GameMath-Chapter 03 변환
 
GameMath-Chapter 11 운동학
GameMath-Chapter 11 운동학GameMath-Chapter 11 운동학
GameMath-Chapter 11 운동학
 
GameMath-Chapter 13 발사체
GameMath-Chapter 13 발사체GameMath-Chapter 13 발사체
GameMath-Chapter 13 발사체
 
게임에서 사용 가능한 간편한 파서
게임에서 사용 가능한 간편한 파서게임에서 사용 가능한 간편한 파서
게임에서 사용 가능한 간편한 파서
 
Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2
 
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
 
게임 프로그래머를 위한 기초 수학 및 물리 - 9장
게임 프로그래머를 위한 기초 수학 및 물리 - 9장게임 프로그래머를 위한 기초 수학 및 물리 - 9장
게임 프로그래머를 위한 기초 수학 및 물리 - 9장
 
초등학생 프로그래밍 교육과정_스크래치 교육 과정안_송상수
초등학생 프로그래밍 교육과정_스크래치 교육 과정안_송상수초등학생 프로그래밍 교육과정_스크래치 교육 과정안_송상수
초등학생 프로그래밍 교육과정_스크래치 교육 과정안_송상수
 
게임수학 강의노트 1부
게임수학 강의노트 1부게임수학 강의노트 1부
게임수학 강의노트 1부
 
게임에서 사용할 수 있는 포물선 운동
게임에서 사용할 수 있는 포물선 운동게임에서 사용할 수 있는 포물선 운동
게임에서 사용할 수 있는 포물선 운동
 
[NDC12] 게임 물리 엔진의 내부 동작 원리 이해
[NDC12] 게임 물리 엔진의 내부 동작 원리 이해[NDC12] 게임 물리 엔진의 내부 동작 원리 이해
[NDC12] 게임 물리 엔진의 내부 동작 원리 이해
 
게임 프로그래머를 위한 기초 수학 및 물리 - 8장
게임 프로그래머를 위한 기초 수학 및 물리 - 8장게임 프로그래머를 위한 기초 수학 및 물리 - 8장
게임 프로그래머를 위한 기초 수학 및 물리 - 8장
 
[아꿈사] 게임 기초 수학 물리 1,2장
[아꿈사] 게임 기초 수학 물리 1,2장[아꿈사] 게임 기초 수학 물리 1,2장
[아꿈사] 게임 기초 수학 물리 1,2장
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법
 
게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)
 
프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법
 

Semelhante a 6장 performance of game_최준혁_2

Nexon Developers Conference 2017 Functional Programming for better code - Mod...
Nexon Developers Conference 2017 Functional Programming for better code - Mod...Nexon Developers Conference 2017 Functional Programming for better code - Mod...
Nexon Developers Conference 2017 Functional Programming for better code - Mod...Isaac Jeon
 
Java mentoring of samsung scsc 2
Java mentoring of samsung scsc   2Java mentoring of samsung scsc   2
Java mentoring of samsung scsc 2도현 김
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010Ryan Park
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10Ryan Park
 
Effective c++(chapter 5,6)
Effective c++(chapter 5,6)Effective c++(chapter 5,6)
Effective c++(chapter 5,6)문익 장
 
[2018] Java를 위한, Java에 의한 도구들
[2018] Java를 위한, Java에 의한 도구들[2018] Java를 위한, Java에 의한 도구들
[2018] Java를 위한, Java에 의한 도구들NHN FORWARD
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기Jaeseung Ha
 
Deview 2019 눈발자국
Deview 2019 눈발자국Deview 2019 눈발자국
Deview 2019 눈발자국hanbeom Park
 
C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부Gwangwhi Mah
 
[2011 04 11]mock_object 소개
[2011 04 11]mock_object 소개[2011 04 11]mock_object 소개
[2011 04 11]mock_object 소개Jong Pil Won
 
GCGC- CGCII 서버 엔진에 적용된 기술 (1)
GCGC- CGCII 서버 엔진에 적용된 기술 (1)GCGC- CGCII 서버 엔진에 적용된 기술 (1)
GCGC- CGCII 서버 엔진에 적용된 기술 (1)상현 조
 
게임프로그래밍입문 5주차
게임프로그래밍입문 5주차게임프로그래밍입문 5주차
게임프로그래밍입문 5주차Yeonah Ki
 
브릿지 Unity3D 기초 스터디 3회
브릿지 Unity3D 기초 스터디 3회브릿지 Unity3D 기초 스터디 3회
브릿지 Unity3D 기초 스터디 3회BridgeGames
 
what is smart point in c++
what is smart point in c++what is smart point in c++
what is smart point in c++Changmin Lee
 
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출GDG Korea
 
C++ Advanced 강의 2주차
C++ Advanced 강의 2주차C++ Advanced 강의 2주차
C++ Advanced 강의 2주차HyunJoon Park
 

Semelhante a 6장 performance of game_최준혁_2 (18)

Nexon Developers Conference 2017 Functional Programming for better code - Mod...
Nexon Developers Conference 2017 Functional Programming for better code - Mod...Nexon Developers Conference 2017 Functional Programming for better code - Mod...
Nexon Developers Conference 2017 Functional Programming for better code - Mod...
 
Java mentoring of samsung scsc 2
Java mentoring of samsung scsc   2Java mentoring of samsung scsc   2
Java mentoring of samsung scsc 2
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
 
Effective c++(chapter 5,6)
Effective c++(chapter 5,6)Effective c++(chapter 5,6)
Effective c++(chapter 5,6)
 
[2018] Java를 위한, Java에 의한 도구들
[2018] Java를 위한, Java에 의한 도구들[2018] Java를 위한, Java에 의한 도구들
[2018] Java를 위한, Java에 의한 도구들
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
 
Deview 2019 눈발자국
Deview 2019 눈발자국Deview 2019 눈발자국
Deview 2019 눈발자국
 
C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부
 
[2011 04 11]mock_object 소개
[2011 04 11]mock_object 소개[2011 04 11]mock_object 소개
[2011 04 11]mock_object 소개
 
GCGC- CGCII 서버 엔진에 적용된 기술 (1)
GCGC- CGCII 서버 엔진에 적용된 기술 (1)GCGC- CGCII 서버 엔진에 적용된 기술 (1)
GCGC- CGCII 서버 엔진에 적용된 기술 (1)
 
게임프로그래밍입문 5주차
게임프로그래밍입문 5주차게임프로그래밍입문 5주차
게임프로그래밍입문 5주차
 
브릿지 Unity3D 기초 스터디 3회
브릿지 Unity3D 기초 스터디 3회브릿지 Unity3D 기초 스터디 3회
브릿지 Unity3D 기초 스터디 3회
 
HI-ARC PS 101
HI-ARC PS 101HI-ARC PS 101
HI-ARC PS 101
 
what is smart point in c++
what is smart point in c++what is smart point in c++
what is smart point in c++
 
Mem cached
Mem cachedMem cached
Mem cached
 
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
 
C++ Advanced 강의 2주차
C++ Advanced 강의 2주차C++ Advanced 강의 2주차
C++ Advanced 강의 2주차
 

Mais de Mark Choi

GameMath-Chapter 10 다각형기법
GameMath-Chapter 10 다각형기법GameMath-Chapter 10 다각형기법
GameMath-Chapter 10 다각형기법Mark Choi
 
GameMath-Chapter 09 가시성판단
GameMath-Chapter 09 가시성판단GameMath-Chapter 09 가시성판단
GameMath-Chapter 09 가시성판단Mark Choi
 
GameMath-Chapter 08 고급렌더링
GameMath-Chapter 08 고급렌더링GameMath-Chapter 08 고급렌더링
GameMath-Chapter 08 고급렌더링Mark Choi
 
GameMath-Chapter 07 조명
GameMath-Chapter 07 조명GameMath-Chapter 07 조명
GameMath-Chapter 07 조명Mark Choi
 
GameMath-Chapter 06 카메라
GameMath-Chapter 06 카메라GameMath-Chapter 06 카메라
GameMath-Chapter 06 카메라Mark Choi
 
GameMath-Chapter 04 사원수
GameMath-Chapter 04 사원수GameMath-Chapter 04 사원수
GameMath-Chapter 04 사원수Mark Choi
 
Chapter 02 행렬
Chapter 02 행렬Chapter 02 행렬
Chapter 02 행렬Mark Choi
 
로그라이크 (Rogue like)
로그라이크 (Rogue like)로그라이크 (Rogue like)
로그라이크 (Rogue like)Mark Choi
 
9장10장,stl abstract interface
9장10장,stl abstract interface9장10장,stl abstract interface
9장10장,stl abstract interfaceMark Choi
 
STL활용, abstract interface
STL활용, abstract interfaceSTL활용, abstract interface
STL활용, abstract interfaceMark Choi
 

Mais de Mark Choi (11)

GameMath-Chapter 10 다각형기법
GameMath-Chapter 10 다각형기법GameMath-Chapter 10 다각형기법
GameMath-Chapter 10 다각형기법
 
GameMath-Chapter 09 가시성판단
GameMath-Chapter 09 가시성판단GameMath-Chapter 09 가시성판단
GameMath-Chapter 09 가시성판단
 
GameMath-Chapter 08 고급렌더링
GameMath-Chapter 08 고급렌더링GameMath-Chapter 08 고급렌더링
GameMath-Chapter 08 고급렌더링
 
GameMath-Chapter 07 조명
GameMath-Chapter 07 조명GameMath-Chapter 07 조명
GameMath-Chapter 07 조명
 
GameMath-Chapter 06 카메라
GameMath-Chapter 06 카메라GameMath-Chapter 06 카메라
GameMath-Chapter 06 카메라
 
GameMath-Chapter 04 사원수
GameMath-Chapter 04 사원수GameMath-Chapter 04 사원수
GameMath-Chapter 04 사원수
 
Chapter 02 행렬
Chapter 02 행렬Chapter 02 행렬
Chapter 02 행렬
 
로그라이크 (Rogue like)
로그라이크 (Rogue like)로그라이크 (Rogue like)
로그라이크 (Rogue like)
 
9장10장,stl abstract interface
9장10장,stl abstract interface9장10장,stl abstract interface
9장10장,stl abstract interface
 
RTTI
RTTIRTTI
RTTI
 
STL활용, abstract interface
STL활용, abstract interfaceSTL활용, abstract interface
STL활용, abstract interface
 

6장 performance of game_최준혁_2

  • 1. 6~7장. 성능과 메모리 DreamexeWarrock Client Team : 최준혁
  • 3. 성능에 대한 고려 DreamexeWarrock Client Team : 최준혁
  • 4. 함수의 타입 DreamexeWarrock Client Team : 최준혁
  • 5. 전역 함수 intnHitPoints= GetHitPoints(gameUnit);// Example DreamexeWarrock Client Team : 최준혁
  • 6. 클래스 정적 함수 intnumUnits= GameUnit::GetNumUnits();// Example 비 가상 멤버 함수 GameUnitgameUnit; // 인스턴스 생성 IntnHitPoints= gameUnit.GetHitPoints(); // 멤버 함수 호출 DreamexeWarrock Client Team : 최준혁
  • 7. 단일 상속에서의 가상 함수 GameUnit* pGameUnit= new SomeGameUnit; // 부모 클래스 인스턴스에 자식 클래스 할당 pGameUnit -> RunAI(); // 가상 함수 호출 GameUnit virtual void RunAI() { // virtual function } SomeGameUnit 상속 void RunAI() { // Override code} DreamexeWarrock Client Team : 최준혁
  • 8. 다중상속에서의 가상 함수 C A A A B C B B Vtable Layout C DreamexeWarrock Client Team : 최준혁
  • 9. 인라인화 If ( gameUnit.IsActive() ) { // … } Class GameUnit { inlineboolGameUnit::IsActive() const { return m_bActive; } }; If ( gameUnit.m_bActive ) { // … } DreamexeWarrock Client Team : 최준혁
  • 10. 부가적인 함수 오버헤드 DreamexeWarrock Client Team : 최준혁
  • 11. CPU가 빠를 수록, 메모리가 느릴수록 더 많은 사이클 대부분의 캐시는 32바이트, 개체의 크기를 32byte또는 그 배수로 맞추자 캐시와 메모리 정렬 512M * 6 = 3GHz 6 * 6 = 36CPU Cycle 3GHz 512Mhz CPU Chace Memory 6 6 0xC0001F 0xC00020 (32) 0xC00024 Chace ~ (36) (63) 0xC0003F 0xC00040 DreamexeWarrock Client Team : 최준혁
  • 12. 동적 할당 테스트 void main() { char* p1 = new char[32]; printf("p1: %p", p1); char* p2 = new char[32]; printf("p2 :%p", p2); char* p3 = new char[32]; printf("p3 :%p", p3); char* p4 = new char[32]; printf("p4 :%p", p4); char* p5 = new char[32]; printf("p5 :%p", p5); delete p2; delete p4; char* p6 = new char[32]; printf("p6 :%p", p6); } 여러 번 할당과 해제를 반복하면 메모리 단편화(임의 순으로 메모리 배정되기 때문) DreamexeWarrock Client Team : 최준혁
  • 13. 메모리 관리자와 메모리풀 DreamexeWarrock Client Team : 최준혁
  • 14. 메모리풀#1 class MemoryPooler { public: virtual ~MemoryPooler() {} void* operator new(size_t size) { // new 연산자 오버로딩 return s_pool.Alloc(size); } void operator delete(void* obj, size_t size) { // delete 연산자 오버로딩 s_pool.Free(obj, size); } private: static MemoryPools_pool; }; MemoryPoolMemoryPooler::s_pool; MemoryPool MemoryPooler A B C Main(테스트코드) DreamexeWarrock Client Team : 최준혁
  • 15. 메모리풀#2 A B C Main(테스트코드) DreamexeWarrock Client Team : 최준혁
  • 16. 결론 메모리 풀 적극적 활용 클래스별로 메모리풀이 있는 것이 좋다. (범용 풀도 클래스별로 나누어 주어야 한다.) DreamexeWarrock Client Team : 최준혁