ECS

출처
NDC 2019의 강연 내용을 보고 정리한 내용이다.

ECS란?

캐시 적중률을 높이기 위해 고안된 모델, 메모리 상에 데이터를 선형으로 배치해 공간 지역성 최대화를 통해 캐시 적중률을 높인다.

ECS 구조

Entity : 인덱스(Integer), 컴포넌트를 논리적으로 묶는 역할만 한다.
Component : 데이터 보관을 담당, 구조체로 구현, 멤버는 값형식만 가능, 가비지 컬렉터에 관리되지 않는다.
System : 컴포넌트에 보관된 데이터를 처리

ECS 구성요소

Archetype : 컴포넌트를 조직화, 컴포넌트 배열을 모아놓은 것, 이 배열의 인덱스가 같은 원소들이 하나의 Entity를 구성. System은 Archetype에 쿼리. Entity의 구조가 변경되었을 경우, 메모리 이동이 발생.
Chunk : 실제로 물리메모리에 저장되는 형태, 16KB 고정 크기, 컴포넌트 삽입/삭제 비용 최소화를 위해 연결 리스트로 구성