Instruments는 Xcode Tool의 일부로 강력하고 유연한 performance 분석과 테스트할 수 있는 툴입니다.
시간에 따라 앱과 프로세스 등 프로파일링에 따라 데이터를 수집하고 분석하여 자세한 결과를 제공해줍니다.
Instruments의 기능제공은 다음과 같습니다.
하나 또는 그 이상의 앱 프로세스 동작 검사
Wi-Fi 및 Bluetooth와 같은 장치별 기능 검사
시뮬레이터 또는 물리적 장치에서 프로파일링 수행
소스 코드의 문제 추적
앱에서 성능 분석 수행
leaks과 같은 메모리 문제를 앱에서 찾습니다.
더 높은 전력 효율성을 위해 애플리케이션을 최적화하는 방법 확인
일반적인 시스템 수준 문제 해결 수행
기기 구성을 템플릿으로 저장
아래와 같은 단계로 구성됩니다.
instrumets 시작 시 위와 같은 template이 제공됩니다.
각각의 standard는 다음과 같습니다.
Blank
사용자 정의할 수 있는 빈 문서
Activity Monitor
시스템과 프로세스에 대한 CPU, Memory, disk, network 사용량 통계
Allocations
virtual memory 와 heap을 추적하고
객체에 대한 retain/release 기록 제공(선택적)
Animation Hitches
scrolling 및 animation hitches를 측정하고 감지
graphic pipeline을 시각화하고 조사합니다.
App Launch
스레드 상태를 추적하여 애플리케이션 성능 조정
Core Data
Core Data fileSystem을 추적합니다
Counters
시간 또는 sampling methods 기반으로 performance monitor counter (PMC)를 수집합니다.
Energy Log
device 주요 구성요소들의 상태를 끄고 켤 수 있을 뿐만 아니라 에너지 사용에 관한 진단 제공
File Activity
fileSystem 및 disk I/O를 기록하고 분석합니다.
Game performance
게임 performance 와 스무스한 프레임 성능 이해
Leaks
allocations 및 leaked blocks에 대한 메모리 주소 기록 통계 제공
Logging
통합 로깅 시스템의 로그 및 표지판(?) 시각화.
Metal System Trace
애플리케이션, driver, GPU 및 display에서 추적 정보를 제공
Network
TCP/IP and UDP/IP 분석
SceneKit
SceneKit을 사용하는 Application
SwiftUI
SwiftUI. 시간에 따른 property 업데이트 및 slow frame 식별
System Trace
운영체제에서 무슨일이 일어나는지 볼 수 있음.
스레드 및 virtual memory를 통해 앱 성능 파악
Time Profiler
시간 기반 sampling 수행
Zombies
일반적인 메모리 사용량을 측정
Profiling controls: 데이터 수집 및 기록, 일시중시 및 중지할 수 있습니다.
Target device list: device 설정
Target process list: 프로파일링할 프로세스 설정
Activity viewer: 실행 횟수와 현재 추적의 경과 시간을 표시
Add Instrument button (+): instruments Library palette를 추가할 수 있는 목록을 표기하거나 숨깁니다.
View buttons: detail pane and inspector을 숨기거나 표시합니다.
Timeline pane을 자세히 살펴보면 다음과 같습니다.
기록된 데이터의 그래픽이 요약되어 보여집니다.
이 Pane는 데이터를 스크롤하여 자세히 살펴볼 특정 영역을 선택하고
플래그를 삽입하여 관심 지점을 강조표시할 수 있습니다.
또한 확대/축소로 조정하거나 그래픽이 표시되는 정보를 변경할 수 있습니다.
Detail pane은 크게 세 가지
navigation bar, collected data area, filter and configuration bar로 나뉩니다.
detail pane에 표시된 실행에 대한 정보가 포함되어 있습니다.
기록에 대한 정보와 일부 기기의 경우 선택한 데이터에 대한 추가 세부 정보가 포함됩니다.
https://help.apple.com/instruments/mac/current/#/dev7b09c84f5
https://help.apple.com/instruments/developer/mac/current/#/devcd5016d31