Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

행복한 개구리

OceanCleaner 21.08.20. 개발일지 - 최적화 프로파일링 본문

Unity/Project : Ocean Cleaner

OceanCleaner 21.08.20. 개발일지 - 최적화 프로파일링

HappyFrog 2021. 8. 20. 19:41

프로젝트의 발열을 잡기위해 며칠간 최적화를 공부하며 메모리를 확보할 수 있는 부분들을 찾고있다.

일단 CPU또는 GPU의 문제인지 알아야 하기때문에(보통은 GPU에서 발열이 나는 경우가 10배가량 많다고 한다) 프로파일링을 돌려보았다.

▲ 에디터에서 Window - Analysis - Profiler를 켜면 나온다.

우선 그래프를 보았을 때 가장 두드러지게 많이 차지하는 부분이 렌더링이다.

렌더링이 거의 반정도를 차지하는 것을 확인하였고 그 다음은 CPU와 GPU의 속도를 동기화하여 테어링을 방지해주는 Vsync, 그 다음으로는 스크립트가 차지했다.

 

결과를 보니 생각보다 스크립트의 비중이 컸으며 생각보다 렌더링의 문제라고 보기에는 그 비중이 상당이 작았다. 그리고 Vsync도 보아하니 CPU에서 수행하는 것 같은데 CPU에서 렌더링 명령을 할당해주는 메모리와 (Vsync + 스크립트)의 메모리 비중이 거의 비슷하게 나오는 것으로 보아 비단 UI, 오브젝트, 메쉬들의 문제가 아닌듯했다.

 

따라서 계획은

스크립트에서는 

  1. 시작했지만 작동하지 않을때도 정지되지 않은 코루틴을 모두 정지시켜 줄 것이다.
  2. 반복문을 확인하여 낭비되는 구간이 있는지 확인하고 수정할 것이다.
  3. Update나 FixedUpdate를 확인하여 낭비되는 프레임이 있는지 확인하고 수정할 것이다.

Vsync는

  1. Vsync를 끌 수 있는지 알아보고 만약 가능하다면 Vsync가 없을 때 테어링현상이 발생하는지 확인할 것이다.
  2. 테어링이 발생한다면 팀원들의 의견을 묻고 Vsync를 제거/지속 하는 방향으로 진행할 것이다.

렌더링에서는

  1. 어차피 폴리곤을 줄인다고 배치가 줄진 않는다. 따라서 불필요한 UI를 줄일 계획이다.
  2. 사용하지 않는 오브젝트를 비활성한다면 메모리에 부담이 줄어드는지 확인한 후 그러하다면 사용하지않는 오브젝트를 비활성시켜두고 사용할 때만 활성 시켜줄 예정이다.

그리고 가장 많이 나온 Other, 즉 기타에서는

  1. 해당 Loop이 뭘 의미하는지 찾아보고 고칠 수 있는지를 알아봐야겠다.

 

우선 여기까지 계획을 잡고 실행하며 발열이 줄어드는지 기기테스트를 해봐야겠다.

그리고 동시에 최적화에 대한 공부도 더 진행하며 해봐야겠다.