알고리즘

오브젝트를 생성하고 삭제하는 문제

조규현15 2015. 1. 8. 23:37
반응형

일반적으로.. 오브젝트가 생성되면 삭제가 되기 마련이다.

(이 글은 필자는 탄막슈팅게임을 만들면서 느낀 점이다)


특수한 경우 이러한 상태가 수 많이 반복되야 한다.

(위 상황)

이럴 때 우리는 어떻게 퍼포먼스를 높일 수 있을까 고민을 하게된다.


물론, 좋은 게임환경(ex PC)에서는 어느정도의 처리도 감안할 수 있지만

모바일, 웹 같은 상대적으로 적은 리소스를 가지고 게임을 표현할 경우 이러한 문제도 깊게 생각해봐야 한다.


그래서, 일반적은 생성과 삭제를 살펴본다면(예시는 슈팅게임으로 진행한다)

총알 객체

Class Bullet{}이 존재한다면 이것을 관리하기 위한 배열

Bullet<List>이 필요하겠다.


다행이게도 이러한 Array는 기본적으로 제공하는 사용법이 있다. 가령,

추가의 Put()

삭제의 Slice()

선택의 Get()

이러한 함수들은 일반적인 배열의 삭제나 선택의 방식보다 빠르고 좋은 성능을 가진다.

(WorstCase - 배열의 삭제)


하지만 이러한 제공 함수들도 Cost가 요구된다.


이러한 경우 Array의 overwrite를 활용 할 수 있다.

ex) 총알이 한 화면에서 최대 100개 까지 표현될 수 있다면

queue형태의 array queue 자료구조를 활용하는 방법도 생각할 수 있다.


만약, maxSize를 예상할 수 없다면


list 크기 변환은 C라면 malloc으로 Java라면 new 로 array의 Size를 동적으로 관리 할 수 있다.


이러한 아이디어는 os에서 process에 할당하는 memory 관리에서 쓰이는 원리이다(실제로는 pointer로 linkedList를 관리하며 alloc link와 dealloc link를 관리하며 훨씬 효율적으로 사용된다)


반응형

'알고리즘' 카테고리의 다른 글

더블 버퍼링  (0) 2015.02.12
임의의 순서로 이루어진 순열 얻기  (0) 2015.02.10
현재 화면에 맞춰 이미지 크기 변경  (0) 2015.02.10
XOR 교체 알고리즘  (0) 2015.01.29
충돌범위  (0) 2015.01.08