작업이 어느정도 진행되었을때 프로파일링 툴을 사용한다.
프로그램을 과도하게 사용해보고 오류가 발생하는지 확인할때 프로파일링 툴을 사용해보면 된다고 한다.
컨트롤7 버튼으로 프로파일러를 열수있다.

프로그램이 실행되었을때 보여지는 화면

각 프레임별로 cpu와 메모리 등의 상황들을 확인할 수 있다.
데이터의 저장공간에는 제한이 있기에 edit preferences에서 profiler를 들어가면 수정해줄 수 있다.(frame Count)
600프레임 이상은 경고문구가 발생하기에 적당히 올려주는 것이 좋다.
PlayMode와 EditMode가 존재한다.
EditMode는 에디터에서의 상태를 확인하는건데, 크게 중요하진 않다.
빌드 이후에도 프로파일링을 할 수 있다.
우선 playMode에서 기기를 연결해준다.

개발자 빌드 기능, AutoConnect Profiler, Deep Profilling Support 기능을 켜주고 build And Run 버튼을 클릭해주면 된다.


위 사진처럼 플레이되면서 어떻게 진행되는지 확인할 수 있다.

실제 플레이 중에 과부하가 걸리는 위치를 알아낼 수 있다.
하지만 명칭이 이해하기 어렵다.
Deep Profile

Deep Profile 버튼을 클릭하여 작동시키면 어느 부분에서 문제가 발생하는지 메서드명을 알려준다.
다만 리소스를 많이 잡아먹기 때문에 필요할때 사용하는 것이 좋다
Profiler.BeginSample("작업시작");
Profiler.EndSample();
위 코드를보고자 하는곳 앞에 집어넣는 것으로 Deep profle의 위치를 지정해 줄 수 있다.

각 modules 탭에서 어느 부분이 부하을 일으키는지 볼 수 있다.
(cpu, gpu, rendering 등등..)
cpu에서 TimeLine 기능을 사용하면 하나의 작업이 한 프레임동안 어느정도의 시간을 차지하는지도 볼 수 있다

Rendering 에서는 Batches count, SetPass calls Count를 봐야한다. 드로우콜 구조를 둘로 나눈 것이다.
Memory는 차지하는 메모리를 확인 가능하다.

그외 부분은 필요할때만 찾아보면 좋을 것 같다.
가비지컬렉터
가비지컬렉터는 할당된 메모리 영역에서 안쓰이는부분을 삭제하는 역할을 한다. 하지만 성능 저하의 주요 원인이 된다. 호출되는것만으로도 성능을 많이 잡아먹는다고 한다..
가비지컬렉터는 알아서 임의적인 타이밍에 호출이 된다. 이 부분을 점진적 가비지 컬렉팅으로 변경되면서, 여러 프레임에 나눠서 메모리를 정리한다. 그 부분은 따로 설정해주어야 한다.
project setting - player - config - use Incremental GC 에서 체크를 해주면 점진적 가비지컬렉팅으로 바꿔줄 수 있다.
이외에 호출되는 경우가 있는데, 메모리할당을 해야하는데 공간이 없는경우이다.