0Pricing
Swift Academy · 강의

Instruments 기초: 시간 프로파일러

CPU 사용량을 기록하고 호출 트리를 읽으며 코드의 병목 지점을 찾습니다.

Instruments 기초: 시간 프로파일러은(는) CoddyKit의 무료 Swift Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Swift Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

Instruments가 필요한 이유

Xcode Instruments는 성능 분석 도구 모음입니다. Time Profiler는 CPU 시간이 어디에 사용되는지 보여 주므로 병목 지점을 찾을 수 있습니다.

// Launch: Xcode → Product → Profile (Cmd+I)
// Choose "Time Profiler" template
// Run your app and exercise the slow path

추적 기록하기

Instruments에서 기록 버튼을 클릭하고 프로파일링하려는 기능을 실행한 다음 기록을 중지합니다.

// 1. Connect device or use simulator
// 2. Launch with Profile (Cmd+I)
// 3. Select Time Profiler
// 4. Record for 5-30 seconds
// 5. Stop and analyze

호출 트리 보기

호출 트리는 CPU 사용 시간에 따라 함수를 보여 줍니다. 가장 무거운 호출 경로가 계층 구조의 상단에 표시됩니다.

// Call Tree columns:
// Self %: time spent in this function exclusively
// Symbol Name: function or method name
// Expand to see callers/callees

가장 무거운 스택 추적

가장 무거운 스택 추적 패널은 샘플이 가장 많이 수집된 단일 호출 경로를 보여 줍니다. 대개 최적화를 시작하기에 가장 좋은 지점입니다.

// In Time Profiler:
// View → Heaviest Stack Trace
// Pinpoints the exact line consuming the most CPU

샘플 필터링하기

Apple 프레임워크보다 직접 작성한 코드에 집중하려면 "시스템 라이브러리 숨기기"와 "호출 트리 반전"을 활성화합니다.

// Call Tree options (bottom of Instruments):
// ☑ Invert Call Tree    – shows leaf functions first
// ☑ Hide System Libraries – filters out OS internals

소스로 이동하기

호출 트리에서 심볼을 이중 클릭하면 Xcode에서 문제가 발생한 줄로 바로 이동합니다.

// Double-click → opens file in Xcode at the hot line
// Red/orange annotation shows time spent per line

Time Profiler와 SwiftUI

SwiftUI 앱에서는 body에 대한 예상치 못한 호출을 확인합니다. 과도한 다시 그리기는 호출 트리에 반복되는 View.body 항목으로 나타납니다.

// Common SwiftUI hot spots:
// - body called 100+ times per second
// - Equatable not implemented, causing unnecessary diffs
// - Heavy computation in body instead of a model

메인 스레드와 백그라운드 비교하기

상단의 스레드 레인은 스레드별 활동을 보여 줍니다. 백그라운드 스레드에서 CPU가 급증하면 메인 스레드 밖에서 처리하는 작업이 과도하다는 의미일 수 있습니다.

// Thread lanes: Main Thread, Thread 2, Thread 3...
// Select a thread to see its call tree in isolation

앱 시작 시간을 위한 Time Profiler

앱 실행 시점부터 프로파일링하고 추적 기록의 처음 몇 초를 확인하여 앱 시작 시간을 측정합니다.

// Instruments → File → Launch Profile
// Measures time from process start to first frame render

기준선 설정하기

최적화하기 전에 기준 추적을 기록합니다. 변경한 후 다시 프로파일링하고 비교하여 개선되었는지 확인합니다.

// Baseline: 45ms for imageLoad()
// After optimization: 8ms for imageLoad()
// Confirm: 5.6x speedup verified in Instruments

정확한 프로파일링을 위한 팁

릴리스 빌드의 실제 기기에서 프로파일링합니다. 시뮬레이터와 디버그 빌드는 성능 측정값을 왜곡합니다.

// Always:
// 1. Use physical device
// 2. Build with Release configuration (Product → Scheme → Edit → Build → Release)
// 3. Repeat measurement 3+ times for consistency

간단한 확인

시간을 가장 많이 소요하는 리프 함수가 목록 상단에 표시되도록 하는 Instruments 호출 트리 옵션은 무엇입니까?

강의 요약

Cmd+I → Time Profiler로 프로파일링합니다. 호출 트리 반전과 시스템 라이브러리 숨기기를 사용해 직접 작성한 코드를 먼저 확인합니다. 심볼을 이중 클릭하여 소스로 이동합니다. 릴리스 모드의 실제 기기에서 프로파일링합니다. 최적화 전후에 기준선을 설정하여 개선되었는지 확인합니다.

자주 묻는 질문

“Instruments 기초: 시간 프로파일러” 강의는 무료인가요?

네 — “Instruments 기초: 시간 프로파일러” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Swift Academy 강의 전체를 잠금 해제할 수 있습니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“Instruments 기초: 시간 프로파일러”에서 뭘 배우나요?

CPU 사용량을 기록하고 호출 트리를 읽으며 코드의 병목 지점을 찾습니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Swift Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Swift Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“Instruments 기초: 시간 프로파일러” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Swift Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Swift Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Instruments 기초: 시간 프로파일러
  2. 할당과 누수 Instruments
  3. 메인 스레드 검사기와 멈춤 현상
  4. 병목 경로 최적화: COW, 인라이닝 및 특수화
← Swift Academy(으)로 돌아가기