빠르게 연산을 해서 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 |