본문 바로가기
1일 1 구현

[1일 1 구현] PoolManager - 1

by LemongO 2024. 5. 16.

📌오브젝트 풀링

게임에선 거의 필수라고 보는 최적화 기법 중 하나...

개인적으로 할 땐 많이 사용해 봤는데 생각해 보니 캠프 중에 직접 구현해서 사용해 본 적이... 없는 것 같았다.

 

그래서 구현해보는 오브젝트 풀링

 

준비물

  • TestPrefab
  • RandomSpawner.cs
  • TestSpawnObject.cs

사진 크기가 참...

 

📌풀링 적용 전

무작정 테스트프리팹을

spawnDelay초가 지난 뒤 countPerSpawn 수만큼 spawnOffset 크기의 구 안에 랜덤 생성 후 1초 뒤 파괴한다.

0.05초에 20개씩 생성, 각 오브젝트는 1초마다 파괴를 반복해보자

 

이런 느낌인데 before after 느낌으로 극적인 세팅을 해보자

0.01초에 100개 생성

 

 

프레임저하 + GC 둘 다 확연히 늘었다

 

 

그렇다면 이제 ObjectPooling을 활용하면 어떻게 되는지 확인해 보자

 


세팅은 다음과 같이 바꿨다.

※ 한 번에 100개씩 스폰 시 생성/파괴 vs 풀링의 FPS 차이가 거의 없었기 때문에

(38 vs 42 약 4 프레임 차이) 이 부분은 다음에 이유를 알아보도록 해야겠다.

 

풀링 X

 

풀링 O

 

결과적으로 약 40 프레임 가량 차이가 났다.

Verts와 Batches 때문에 그런 거라고 생각할 수도 있지만 비슷한 상황에서도 여전히 많은 차이가 났다.

 

코드도 같이 쓰려고 했으나 동시 100개 생성에서 당황해서 이것저것 알아보다 보니 시간을 너무 많이 뺏겼다.

코드 부분은 내일 쓰도록 해야겠다.

'1일 1 구현' 카테고리의 다른 글

[1일 1 구현] Managers.cs  (0) 2024.06.04
[1일 1 구현] PoolManager - 2  (0) 2024.05.18
[1일 1 구현] 코드 정리 및 공통 클래스  (0) 2024.05.15
[1일 1 구현] UI Base  (0) 2024.05.13
[1일 1 구현] UI Manager  (0) 2024.05.13