Written by
doremin
on
on
Swift에서 Instruments의 Points of Interest 활용법
Swift에서 Instruments의 Points of Interest 활용법
1. 개요
Instruments로 앱의 성능을 분석할 때, 복잡한 로그와 다양한 이벤트가 한데 섞여 있으면 “정확히 어떤 시점에 문제가 발생했는지” 파악하기 어려워요.
이럴 때 Instruments의 Points of Interest(POI) 기능을 활용하면, 직접 관심 있는 지점을 지정해 타임라인에 표시할 수 있기 때문에, 중요한 이벤트를 한눈에 구분하고 정확하게 성능을 분석할 수 있어요.
2. Point of Interest란?
Point of Interest는 Instruments 타임라인에 개발자가 직접 “관심 구간”을 표시할 수 있는 기능이에요. 이를 통해 성능 분석 중에 중요한 지점을 쉽게 식별할 수 있어요.
3. 사용법
3-1. OSSignposter 생성
import OSLog
let signposter = OSSignposter(subsystem: Bundle.main.bundleIdentifier!, category: .pointsOfInterest)
3-2. 단일 이벤트 마커 남기기
특정 버튼을 눌렀을 때, 혹은 특정 함수 진입 시점에 POI를 남길 수 있어요.
signposter.emitEvent("버튼 클릭")
// or
signposter.emitEvent(#function)
3-3. 구간(Interval) 마커 남기기
let interval = signposter.beginInterval("구간 마커 + 무거운 작업")
heavyTask()
signposter.endInterval("구간 마커 + 무거운 작업", interval)
4. 왜 Point of Interest를 사용해야할까?
POI 없이 Time Profiler만 썼을 때의 불편함
- 성능 이슈가 생긴 시점과 내 코드의 어느 부분이 연결되는지 헷갈림
- CPU Spike / Hang 을 찾아서 역으로 코드 흐름을 추적해야함 -> 반복적이고 힘듦
- 비동기 처리같은 플로우에서 해석이 더더욱 어려움
POI 도입 후
- 내가 지정한 이벤트/구간이 타임라인에 바로 표시되어, 분석이 직관적으로 변해요.
- POI 마커를 기준으로 CPU/Memory/FPS 등 성능 변화가 어떻게 일어나는지 즉시 확인할 수 있어요.
- 비동기/콜백 구조에서도 정확한 구간별 성능 이슈를 빠르게 파악할 수 있어요.
- 분석 결과를 팀과 공유할 때도, POI 이름만 언급하면 바로 커뮤니케이션이 돼요.