하루하라 알고리즘
Xcode Instruments를 활용한 앱 성능 및 메모리 분석
Instruments 사용법 - TIL
사용자가 Xcode에서 Instruments를 사용하여 앱 성능을 분석하는 방법에 대해 묻고 있습니다. 주로 Time Profiler, Allocations, Leaks 도구에 대해 설명해야 합니다.
- Time Profiler: 앱 실행 중 CPU 사용량을 기록해 성능 병목을 찾습니다.
- Allocations: 메모리 할당과 객체 생성을 분석해 메모리 문제를 파악합니다.
- Leaks: 메모리 누수를 탐지하고, 누수된 객체 트레킹을 통해 해결 방법을 찾습니다.
각 도구를 어떻게 활용할 수 있을지 자세히 설명할 예정이에요.
Instruments로 성능 분석하기 - TIL
사용자는 Xcode Instruments를 사용한 성능 분석 방법을 TIL로 원하셨습니다. 분석할 내용은 Time Profiler, Allocations, 그리고 Leaks입니다.
- Instruments 소개
- Time Profiler 사용법
- Allocations 사용법
- Leaks 사용법
- 요약
이전에 사용자가 굵은 글씨(Bold)를 지양한다고 했으니, 마크다운 헤딩은 사용하되 굵은 글씨는 피해야 할 것 같습니다. TIL은 세부적이고 자세하게 작성하려고 해요.
8초 동안 생각함
TIL: Xcode Instruments를 활용한 앱 성능 및 메모리 분석
- Instruments 실행 및 템플릿 선택
- Xcode 메뉴에서 Product > Profile(⌘I) 선택
- Instruments 앱이 뜨면 다음 중 필요한 템플릿을 고른다
- Time Profiler
- Allocations
- Leaks
- Record 버튼을 눌러 대상 앱을 실행하고, 검사하려는 시나리오(화면 전환, 기능 사용 등)를 재현한다
- Time Profiler로 성능 이슈 찾기
- 개요
- CPU 샘플링 기반 프로파일러로, 어느 함수가 얼마나 CPU를 소비하는지 파악
- 주요 단계
- Record 후 앱을 평소처럼 사용하며 성능 저하 지점을 재현
- Call Tree 뷰에서 ‘Invert Call Tree’ 옵션으로 호출량이 많은 핫스팟(Hot Spot) 확인
- ‘Hide System Libraries’를 켜서 내 코드만 집중
- 각 샘플의 Self vs. Total 시간을 비교하며 병목 지점 탐색
- 심각한 함수를 선택해 Source 링크 클릭 → Xcode 에디터에서 해당 코드로 이동
- Allocations Instrument로 메모리 사용량 및 잠재적 누수 감지
- 개요
- 주요 단계
- Allocations 템플릿 선택 후 Record
- Allocations 타임라인에서 메모리 사용 급증(Growth) 구간 식별
- Statistics 뷰로 전환 → 객체 타입별 할당 횟수 및 총 크기 확인
- Persistent Allocation 필터를 켜서 해제되지 않은 객체만 표시
- Responsible Library/Caller 컬럼을 활용해 어느 코드에서 할당이 발생했는지 파악
- Leaks Instrument로 실제 메모리 누수 찾기
- 개요
- 런타임 중 해제되지 않고 남아 있는 메모리 블록을 탐지
- 주요 단계
- Leaks 템플릿 선택 후 Record
- Leaks 뷰에서 Detected Leaks 목록 확인
- Leak Stack Trace를 펼쳐서 누수가 일어난 함수 호출 경로 분석
- 관련 코드에 deinit, weak 참조, autoclosure 확인 등으로 누수 원인 수정
- 수정 후 재측정하여 Leaks가 사라졌는지 검증
- 추가 팁
- trace 파일(.trace)을 저장해 버전별 비교 및 코드 변경 전·후 성능 차이 확인
- Instruments Markers(⌘⌥Control M)로 이벤트 구간 표시하여 타임라인 분석 용이
- 시뮬레이터뿐 아니라 실제 디바이스에서도 측정해 환경별 차이 파악
- Instruments의 Allocations, Leaks, Time Profiler를 조합해 CPU·메모리 전반을 종합 분석
요약
- Time Profiler는 CPU 병목, Allocations은 메모리 할당 패턴, Leaks는 누수 지점을 각각 집중적으로 분석할 때 유용하다.
- Record → 재현 → 데이터 필터/뷰 전환 → 문제 지점 파악 → 코드 수정 → 재검증의 순환을 통해 안정적이고 최적화된 앱을 만들 수 있다.