서론
- XCode의 Profiling은 여러 가지가 있다.
- 앱의 성능 및 메모리 사용을 분석하여 최적화하는 프로세스
- Memory Leaks 및 Allocations을 확인하는 대표적인 Memory Profiler, Time Profiler에 대해서 소개
- XCode 상단의 Product → Profile을 통해 Profiling 가능
- Profile을 클릭하면 알아서 Build를 진행
Memory Profiler
- 메모리가 얼마나 할당 되어 있는지 확인 가능
- 메모리가 과다하게 할당 되어 있는지 확인 가능
- 메모리 누수 확인 가능
- Allocations를 클릭
- Leaks를 클릭해도 크게 상관은 없지만, Leaks는 메모리 누수가 일어나지 않으면 보여지지가 않음
- Allocations도 시간에 따라서 Heap 메모리를 시각적으로 보여준다.
- 주로 주목할 것은 제일 상단에 있는 All Heap Allocations의 Total Bytes
- Call Trees로 가면 어떤 함수에서 Heap Allocations가 많이 부과되는지 알 수 있다.
- Bytes Used를 통해 상대적으로 메모리르 많이 잡아먹는 코드를 확인
- 해당 메서드를 더블클릭하면 실제 원인이 되는 코드 주소가 나온다.
- 이 코드를 수정하거나 시간 복잡도를 줄이면 해결
Time Profiler
- 앱을 사용하다보면, 갑작스럽게 느려지는 경우가 나타날 수 있음
- 시간 단위로 앱의 수행 시간을 확인 할 수 있음
- 함수 단위, 호출 경로로도 수행시간 확인 가능
- 병목이 발생하는 부분을 찾아서 디버그하기 매우 용이
- Time Profiler를 찾아서 클릭
- 빨간 녹화 버튼을 클릭하면 앱이 실행되면서 Time Profiler에 CPU 사용량이 기록됨
- 현재까지 기록된 시간 또는 내가 지정한 시간에서 가장 무겁게 실행된 함수 및 스레드를 알 수 있음
- 약 20초까지의 Time Profiling을 마친 후의 모습
- 메인스레드에서 약 94.6%의 Weight를 가지고 있음
- 메인 스레드에서 함수 단위에서 가장 많은 Weight를 가지는 함수는 메인스레드의 비율에서 1.7%정도
- 이 경우에는 많은 CPU 소모량이 나오지는 않았지만, 만약 비정상적으로 나온다면 해당 함수의 시간 복잡도를 감소시키면 됨
- 해당 줄을 클릭하면 실제 코드로 들어가서 보여준다.
- 더 직관적인 해석이 가능