묻공러
[C++ Tips] Data oriented Programming
묻공러
묻지마공부
묻공러
전체
오늘
어제
  • 분류 전체보기 (521) N
    • C (54)
      • [코드조선] C 핵심 (35)
      • [언어본색] C 기초 (19)
    • C++ (72)
      • [루키스] C++ (9)
      • [루키스] 콜백함수 (6)
      • [루키스] STL (8)
      • [루키스] Modern C++ (11)
      • [노코프] C++ (10)
      • [노코프] Tips (16)
      • [일지] C++ (12)
    • C# (20) N
      • [루키스] C# (9)
      • [루키스] 자료구조 (3) N
      • [루키스] 실전 문법 (8) N
    • 자료구조 & 알고리즘 (50)
      • [코드조선] C 자료구조 & 알고리즘 (6)
      • [합격자되기] C++ 코딩테스트 (12)
      • [루키스] C++ 자료구조 & 알고리즘 (32)
    • CS (69)
      • [널널한 개발자] CS 개론 (19)
      • [혼자 공부하는] 컴퓨터 구조 (16)
      • [혼자 공부하는] 운영체제 (18)
      • [널널한 개발자] 네트워크 (16)
    • 게임 그래픽스 (46)
      • [전북대] OpenGL (25)
      • [일지] DirectX (21)
    • 게임 엔진 - 언리얼 (123)
      • [코드조선] 언리얼 (53)
      • [코드조선] 언리얼 데디서버 (8)
      • [일지] 언리얼 (59)
      • [일지] 언리얼 (2) (3)
    • 게임 엔진 - 유니티 (14) N
      • [최적화] 유니티 (4)
      • [루키스] 유니티 (10) N
    • 게임 서버 (17)
    • 게임 수학 & 물리 (19)
      • 게임 수학 (12)
      • 게임 물리 (7)
    • GIT & GITHUB (4)
    • 영어 (18)
      • [The Outfit] 대본 공부 (11)
      • the others (7)
    • 그 외 (14)
      • In (5)
      • Out (5)
      • Review (4)

인기 글

최근 글

hELLO · Designed By 정상우.
C++/[노코프] Tips

[C++ Tips] Data oriented Programming

2024. 4. 8. 12:30

빠르게 연산을 해서 decision making을 해야 하는 분야인 경우에는

OOP로 컨셉으로 코드를 작성했다면,

Memory Access Time으로 인해 피해를 볼 수 있다

 

C++를 사용하는 이유는 기본적으로 OOP와 performance를

둘 다 잡기 위해서 사용한다

하지만 위처럼 performance가 중요한 분야인 경우에는

OOP를 반드시 버려야 한다

 

아래의 코드는

OOP로 인해 performance에 문제가 발생하는 경우이다

price의 평균을 구해야 하는 경우에

반복문이나 람다 함수를 이용하면 된다고 생각할 수 있지만

이는 매우 느리다는 것이 문제이다

#include <iostream>
#include <vector>

class Stocktrading
{
public:
	//

private:
	int price;
	int id;
	std::string sellerName;
	std::string buyerName;
};

int main()
{
	std::vector<Stocktrading> trades(10000);

	// price의 평균을 구해야한다면
	// 반복문? 람다 함수?
	// 매우 느림

}

 

반면,

Object가 아닌 데이터 중심의

Data Oriented Prgramming을 사용하면

아래와 같은 코드로 작성할 수 있다

#include <iostream>
#include <vector>

class Stocktrading
{
public:
	//

private:
	//int price;
	int id;
	std::string sellerName;
	std::string buyerName;
};

int main()
{
	std::vector<Stocktrading> trades(10000);

	std::vector<int> tradePrices(10000);
	// 훨씬 빠르게 price의 평균을 구할 수 있다

}
저작자표시 비영리 변경금지 (새창열림)

'C++ > [노코프] Tips' 카테고리의 다른 글

[C++ Tips] If 중첩문의 가독성 문제  (0) 2024.11.13
[C++ Tips] Early Return  (0) 2024.04.08
[C++ Tips] Function Overloading  (0) 2024.04.08
[C++ Tips] 싱글톤  (0) 2024.04.07
[C++ Tips] static  (0) 2024.04.07
'C++/[노코프] Tips' 카테고리의 다른 글
  • [C++ Tips] If 중첩문의 가독성 문제
  • [C++ Tips] Early Return
  • [C++ Tips] Function Overloading
  • [C++ Tips] 싱글톤
묻공러
묻공러
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.