unity study #6 - 유니티 프로파일러

·2022년 9월 3일
0

Unity Study

목록 보기
6/8

unity 스터디를 하며 공부한 내용을 기록하기 위한 게시글 입니다. 오타 또는 오류가 있을 수 있습니다

1. 성능 저하 유형

  1. GC 스파이크
    가비지 콜렉터 발생 시 갑작스런 프레임 드랍 현상.
    메모리에 불필요한 entity를 제거할 때 발생하므로, 런타임동안 가비지를 적게 생성하도록 해야함.

  2. 긴 로딩 시간
    사용자 경험에 부정적인 영향을 미치므로 로딩 화면의 길이를 줄여야 함.
    또 로딩 타임에 메모리 사용량이 몰리는 경우가 있는데, 이 경우 크래시 발생 확률이 높음.
    에셋을 미리 로드하거나 로드하는 씬의 복잡성을 줄여야 함.

  3. 메모리 사용량
    메모리 부족 시 버벅임 유발, CPU 등 프로젝트 병목 현상의 주 원인
    오브젝트 복잡성을 줄이거나 텍스처의 해상도를 줄임
    오브젝트 풀링
    중복 리소스 체크

2. Profiling

Unity Profiler

  • 유니티 에디터 성능 분석 도구
  • 다만 에디터에서의 프로파일링은 참고용이며, 최종적으로는 타겟 플랫폼에서의 프로파일링이 필하다.
  • 실제 디바이스 환경보다 PC가 성능이 좋은 부분이 있기 때문에 CPU 점유율 정보도 다르다.
  • x code Instruments 가 더 상세한 정보를 얻을 수 있다.

Unity Profiler 실행

[Window] - [Analysis] - [Profiler] (Standalone Process)

Profiler (Standalone Process)
2020.1 버전부터 추가된 기능으로, 유니티 프로파일러를 별도의 프로세스 형태로 띄울 수 있게 됨.

  • 기존 프로파일러는 에디터 쪽의 부하가 함께 잡히는데, 이부분을 없앨 수 있다.
  • 유니티 에디터를 실행하지 않고 프로파일러만 실행할 수 있다

프로파일링 이전 준비사항

  1. 빌드 옵션 Development Build , Autoconnect Profiler 활성화.
    Deep Profiling Support
  2. 빌드 디바이스에 설치 (혹은 Build And Run)
  3. 유니티 실행 전 유니티 에디터와 앱 adb 터널링 만들기
    adb forward tcp:34999 localabstract:Unity-{insert bundle identifier here}
  4. 유니티 에디터 - Profiler 실행 (혹은 Profiler (Standalone Process) 실행)
  5. 프로파일러 상단에서 AndroidPlayer 선택
  6. 앱 실행 시 데이터 기록

Unity Profiler 구성

  1. 프로파일러 모듈 : 프로파일링 할 수 있는 모듈의 리스트.

  2. 프로파일러 컨트롤 : 유니티 프로파일러와 연결할 기기 선택 및 프로파일링 간 프레임 이동, 데이터 기록

    • 좌측 드롭다운 : 연결할 기기 목록 선택
    • 기록 버튼 : 활성화 시 프로파일링 정보를 기록
    • 앞/뒤 화살표 : 한프레임씩 앞/뒤로 이동 가능
    • ⏭ : 현재 프레임으로 이동
    • Frame 000 / 000 : 현재 보고있는 프레임 번호 / 전체 프로파일링 세션동안 수집된 프레임 수
    • Deep Profilie : 모든 스크립트 코드가 프로파일링이 되어 세부적으로 시간을 확인할 수 있으나, 메모리도 많이 사용하기 때문에 단순한 스크립트가 아닌 이상 게임이 느려지게 된다. (대규모 게임에서는 사용X)
  3. 프레임 차트 : 프로파일링 정보를 차트로 확인

    • 마지막 300 프레임의 이력이 표시된다. (최대 2,000개 까지 늘릴 수 있음)
  4. 모듈 세부 정보 창 : 모듈마다 필요한 상세 정보 표시

    • Hierarchy 주로 사용하며, 데이터를 구조에 따라 그룹화 한다.
    • Timeline 쓰레드의 상관관계를 시각적으로 표시한다. (어떤 Main Thread에서 어떤 Job Thread 로 이어지는지 한눈에 볼 수 있음)
    • Raw Hierarchy 데이터를 그룹화 하지 않고 호출 스택과 유사한 계층 구조로 표시.
profile
삶을 스스로 통제하고 있다는 느낌을 받을 때 더 행복하고 성공한다.🍃

0개의 댓글