Unity/Portfolio Daily Log

캐주얼 슈팅 액션 대전 게임 (모바일) - 17 메모리 풀의 성능 확인

Korokke 2022. 8. 2. 19:29

개인 공부를 하면서 Instantiate와 Destroy는 GC를 많이 호출하기 때문에 성능상 좋지 않다는 것을 알게 됐다. 때문에 이번 프로젝트를 진행하면서 오브젝트 풀을 구현한 것인데 실제로 어느정도의 차이가 있는지 궁금해졌다.

 

유니티 Profiler를 이용해 FPS가 차이가 나는지 확인을 해봤다.

이 두 영상에서 차이점은 총알을 Object Pool로 관리를 한 것과 안 한 것의 차이 뿐이다.

 

오브젝트 풀 사용 X (Instantiate와 Destroy를 했을 때)

https://youtu.be/xwnlmu9OyfI

 

 

오브젝트 풀 사용 O 

https://youtu.be/OM-R9MMXWuA

영상을 보면 오브젝트 풀을 사용했을 때 평균 FPS는 250 정도이며, 스파이크 튈 때 120 FPS 정도 나온다.

하지만 오브젝트 풀을 사용하지 않았을 때의 평균 FPS는 220 정도이며, 스파이크 튈 때는 100 FPS 정도 나온다. 

 

고작 총알을 생성하고 파괴하는 것을 ObjectPool로 Active Disable로 바꿨을 뿐인데 조금이라도 FPS 차이가 나서 신기하다. 

 

지금처럼 단순 구형인 총알이 아니라 메테리얼과 오브젝트가 더 복잡하면 GC에 필요한 리소스도 더 커진다고 배웠고, 그에따라 생성하고 파괴할 때 더 많은 시간이 필요하니까 Object Pool의 필요성을 체감하게 된 유의미한 시간이 된 것 같다.