ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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를 미친듯이 잡아먹는 것은 확인 되었다.

     

    빈 씬으로 전환한 뒤 실제 씬으로 전환하는 방법을 사용한 경우 안 쓰는 오브젝트는 정리될 수 있을 것 같다.

    다만 어느정도 효과적인지는 파악이 되지 않았다. (모든 씬이 동일하므로)

    추가적으로 이 방법은 빈 씬을 로드하고 원래 원했던 씬을 로드하므로 어느정도 로딩 시간이 더 걸렸다.

     

    기본적으로 중간에 빈(혹은 그에 준하는) 씬을 여는 것이 메모리 관리에 도움이 될 수 있으나 로딩 속도를 생각하면 그 빈도는 적절히 조정할 필요가 있을 것으로 보인다.

    댓글

Designed by Tistory.