-
Unity 씬 전환 최적화 테스트일지 2019. 11. 9. 16:01
테스트 진행)
0. 조건 설정
각 씬은 50,000 개의 회전하는 박스 오브젝트로 구성됨.총 세개의 씬으로 구성되며 1번씬부터 3번씬 그리고 다시 1번씬으로 5번의 씬 전환을 진행.
성능 프로파일러를 통해 성능(메모리 및 속도) 변화 파악을 진행.1. 기본 씬 전환
아무런 작업 없이 씬 5번 로드
2. 씬 전환 사이에 빈 씬 로드
씬 로딩 전 빈 씬으로 전환한 뒤 실제 로딩할 씬으로 전환
3. 기본 씬 전환 후 gc.collect 여러번 호출
씬 로딩을 5번 한 뒤 6번째 로딩할 때 GC.Collect()를 7번 호출
결론)
기본 씬 전환 시 약간 메모리 사용량이 올라간 것이 확인되었다.
씬 로딩이 완료된 뒤 GC가 동작하는 것이 맞는 듯 하다.
GC.Collect()를 7번 호출하면 내부적으로 즉시 메모리를 정리한다는 소리를 들었는데 실질적으로 도움이 되는지 파악이 되지 않았다. 그보다 GC가 CPU를 미친듯이 잡아먹는 것은 확인 되었다.
빈 씬으로 전환한 뒤 실제 씬으로 전환하는 방법을 사용한 경우 안 쓰는 오브젝트는 정리될 수 있을 것 같다.
다만 어느정도 효과적인지는 파악이 되지 않았다. (모든 씬이 동일하므로)
추가적으로 이 방법은 빈 씬을 로드하고 원래 원했던 씬을 로드하므로 어느정도 로딩 시간이 더 걸렸다.
기본적으로 중간에 빈(혹은 그에 준하는) 씬을 여는 것이 메모리 관리에 도움이 될 수 있으나 로딩 속도를 생각하면 그 빈도는 적절히 조정할 필요가 있을 것으로 보인다.